Opencv xamarin findContours - 如何使用层次结构
Opencv xamarin findContours - how to use hierarchy
我有一个使用 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])
{
...
}
我正在尝试使用 xamarin 将此代码转换为 C# 到 运行 在 Android 上使用 java 版本的 opencv。问题是我不知道如何在那里创建相同的 for 循环。
我有的是:
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 级轮廓层次结构,因为我需要外部轮廓,而不是孔。
万一有人需要这个问题的答案,我很久以前就想出来了,但没时间post。
for(int i = 0; i >= 0;)
{
...
double[] contourInfo = hierarchy.Get(0, i);
i = (int)contourInfo[0]; // this gives next sibling
}
在你理解了这里的说明后,原来是相当容易的:http://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html#gsc.tab=0
希望这对某人有所帮助。
我有一个使用 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])
{
...
}
我正在尝试使用 xamarin 将此代码转换为 C# 到 运行 在 Android 上使用 java 版本的 opencv。问题是我不知道如何在那里创建相同的 for 循环。
我有的是:
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 级轮廓层次结构,因为我需要外部轮廓,而不是孔。
万一有人需要这个问题的答案,我很久以前就想出来了,但没时间post。
for(int i = 0; i >= 0;)
{
...
double[] contourInfo = hierarchy.Get(0, i);
i = (int)contourInfo[0]; // this gives next sibling
}
在你理解了这里的说明后,原来是相当容易的:http://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html#gsc.tab=0
希望这对某人有所帮助。