Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV:嵌套轮廓的数量_Opencv_Contour - Fatal编程技术网

OpenCV:嵌套轮廓的数量

OpenCV:嵌套轮廓的数量,opencv,contour,Opencv,Contour,这是我的第一个问题,谢谢你的阅读 我试图计算轮廓内的内部轮廓数 我发现了一个很好的教程,展示了如何使用h_next和v_next 问题是我用的是垫子,而不是IplImage 我试图用以下方法将其转换: Mat*oimg; IplImage img=*oimg 但我在调用cvFindContours时出错 我还试着使用findContours,它是用来和Mat一起工作的 通过等级制度,但它不起作用 我是C++和OpenCV2.0 < /P> 谢谢你 < >塔米尔> < P> >而不是将 CV:

这是我的第一个问题,谢谢你的阅读

我试图计算轮廓内的内部轮廓数

我发现了一个很好的教程,展示了如何使用h_next和v_next

问题是我用的是垫子,而不是IplImage

我试图用以下方法将其转换:

Mat*oimg; IplImage img=*oimg

但我在调用cvFindContours时出错

我还试着使用findContours,它是用来和Mat一起工作的

通过等级制度,但它不起作用

我是C++和OpenCV2.0 < /P> 谢谢你


< >塔米尔>

< P> >而不是将<代码> CV::Mat < /C> >到<代码> IplImage < /> >使用C API,我直接建议使用C++版本的Cux> CVFundCopeOutsSo()/<代码>:<代码> CV::FundCurror()。不是构建真正的树数据结构,而是将其展平并存储在两个向量中:

cv::Mat image = // ...
std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours(image, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE);
cv::Mat image=/。。。
矢量轮廓;
向量层次;
cv::findContours(图像、轮廓、层次、cv_-RETR_树、cv_-CHAIN_-Abrow_-NONE);
有关如何解释层次结构的说明,请查看:

Hiarachy–可选输出向量 其中将包含有关 图像拓扑。它将有 许多元素作为 轮廓线。对于每个等高线[i] ,元素层次结构[i][0], 教权,教权[i][2],, 层级[i][3]将设置为基于0 下一个和下一个的等高线中的索引 以前的等高线相同 层次层次,第一个孩子 等高线和父等高线, 分别。如果对于某些轮廓i 没有下一个、上一个、父项或子项 嵌套等高线,对应的 层次结构[i]的元素将是 否定的


在同一个代码库中C和C++ API之间的切换确实会影响可读性。我建议只使用C API,如果您需要的功能是从C++ API中丢失的。

使用Case:Mat矩阵;iplimage*p;p=&((iplimage)矩阵)