Opencv xamarin findContours - 如何使用层次结构

时间:2016-05-09 14:54:00

标签: java c# android opencv xamarin

我有一个使用opencv的工作c ++程序,其中一部分是查找图像中整个单词的轮廓。

我有这个有效的c ++代码

vector<cv::Vec4i> hierarchy;
cv::findContours(connected, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0));
for (int i = 0; i >= 0; i = hierarchy[i][0])
    {
        ...
    }

我正在尝试将此代码转换为C#,使用xamarin在Android上使用java版本的opencv运行。问题是我不知道如何在那里创建相同的循环。

我所拥有的是:

JavaList<MatOfPoint> contours = new JavaList<MatOfPoint>();
Mat hierarchy = new Mat();
Imgproc.FindContours(connected, contours, hierarchy, Imgproc.RetrCcomp, Imgproc.ChainApproxSimple, new Point(0, 0));

如何在此处编写相同的for循环? 我正在使用2级等高线轮廓,因为我需要外部轮廓,而不是孔。

1 个答案:

答案 0 :(得分:4)

如果有人需要回答这个问题,我会在前一段时间找出答案,但没有时间发布。

for(int i = 0; i >= 0;)
    {
        ...
        double[] contourInfo = hierarchy.Get(0, i);
        i = (int)contourInfo[0]; // this gives next sibling
    }

在你理解了这里的esplaination之后变得非常容易:http://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html#gsc.tab=0

希望这对某人有帮助。