这对于直接使用OpenCV的C++开发人员来说应该很简单。然而,我使用的是Emgu(.NET的OpenCV包装器),在最新版本中,我们有一个返回void的方法CvInvoke.FindContours,输出结果通过参数引用传递,并且是类型为VectorOfVectorOfPoint的变量。
下面是一个简单的调用示例:
对于RetrType.List模式,我们可以将结果转换为一些数组的数组,并轻松地遍历所有轮廓。然而,在这里,我想通过树形结构浏览所有轮廓。我猜我们必须使用指针(通过输出结果的Ptr属性访问)来进行本机(不安全的)C++代码处理。但我想知道是否有更.NET友好的解决方案。即使使用指针是唯一的解决方案,我仍然不知道如何深入探索那个Ptr以遍历轮廓树。
Emgu安装附带的示例代码中有一个使用CvInvoke.FindContourTree的片段(并返回int[,])。
下面是一个简单的调用示例:
//outputResult is a VectorOfVectorOfPoint
CvInvoke.FindContours(inputImage, outputResult, null, RetrType.Tree,
ChainApproxMethod.ChainApproxSimple);
对于RetrType.List模式,我们可以将结果转换为一些数组的数组,并轻松地遍历所有轮廓。然而,在这里,我想通过树形结构浏览所有轮廓。我猜我们必须使用指针(通过输出结果的Ptr属性访问)来进行本机(不安全的)C++代码处理。但我想知道是否有更.NET友好的解决方案。即使使用指针是唯一的解决方案,我仍然不知道如何深入探索那个Ptr以遍历轮廓树。
Emgu安装附带的示例代码中有一个使用CvInvoke.FindContourTree的片段(并返回int[,])。
Mat
。但是我刚刚试图找到更多关于这种类型的信息,似乎没有任何易于识别的成员来帮助浏览树形结构。如果可能的话,请在你的回答中给我一些示例代码。非常感谢。谢谢! - Hopeless