OpenCV:嵌套轮廓的数量
这是我的第一个问题,感谢您的阅读。
我正在尝试计算轮廓内的内部轮廓的数量。
我找到了一个很好的教程,展示了如何使用 h_next 和 v_next
http://jmpelletier.com/a- simple-opencv-tutorial/
问题是我使用 Mat 而不是 IplImage。
我尝试将其转换为:
Mat *oimg; IplImage img = *oimg;
但调用 cvFindContours 时出现错误。
我还尝试使用 findContours ,它是为与 Mat 一起使用而构建的,
通过遍历层次结构,但它不起作用。
我正在使用 C++ 和 OpenCV2.0
谢谢分配,
Tamir。
This is my first question here, thank you for reading it.
I am trying to count the number of inner contours inside a contour.
I found a nice tutorial showing how to use h_next and v_next
http://jmpelletier.com/a-simple-opencv-tutorial/
The problem is I use Mat and not IplImage.
I tried to convert it with:
Mat *oimg;
IplImage img = *oimg;
But I get an error when calling cvFindContours.
I also tried usign findContours which is built to work with Mat,
by going through the hierrarchy but it didnt work.
I'm usign C++ and OpenCV2.0
Thanks allot,
Tamir.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议直接使用 C++ 版本的
cvFindContours()
,而不是将cv::Mat
转换为IplImage
来使用 C API:cv::findContours()
。它不是构建真正的树数据结构,而是被展平并存储在两个向量中:检查 C++ API 文档 有关如何解释
hierarchy
的说明(重点是我的):在同一代码库中的 C 和 C++ API 之间切换确实会损害可读性。如果 C++ API 中缺少您需要的功能,我建议仅使用 C API。
Instead of converting the
cv::Mat
to anIplImage
to use the C API, I suggest directly using the C++ version ofcvFindContours()
:cv::findContours()
. Instead of building a true tree data structure, it is flattened and stored in two vectors:Check the C++ API documentation for instructions on how to interpret
hierarchy
(emphasis mine):Switching between the C and C++ API in the same codebase really hurts readability. I suggest only using the C API if the functionality you need is missing from the C++ API.