OpenCV:嵌套轮廓的数量



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

我正在尝试计算轮廓内轮廓的数量。

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

http://jmpelletier.com/a-simple-opencv-tutorial/

问题是我使用Mat而不是IplImage。

我试着用:

垫* oimg;

但是当调用cvFindContours时,我得到一个错误。

我也试过使用findContours,这是建立与Mat工作,

通过遍历层次结构,但它不起作用

我正在使用c++和OpenCV2.0

谢谢分配,米尔

.

与其将cv::Mat转换为IplImage以使用C API,我建议直接使用cvFindContours(): cv::findContours()的c++版本。它不是构建一个真正的树状数据结构,而是被平化并存储在两个向量中:

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);

查看c++ API文档,了解如何解释hierarchy(重点是我的):

hierarchy -可选的输出向量它将包含有关的信息图像拓扑。它将有许多元素作为数量轮廓。对于每个轮廓轮廓[i],元素层次结构[i][0];Hiearchyi, hiearchy[i][2];hiearchy[i][3] 将被设置为基于0的下一个和等高线的指数以前的轮廓相同等级级别,第一个子节点等高线和母等高线,分别。对于某些轮廓i没有下一个,上一个,父或嵌套等高线,对应层次结构的元素[i]将是-

在同一代码库中的C和c++ API之间切换确实会损害可读性。我建议只有当你需要的功能在c++ API中缺失时才使用C API。

相关内容

  • 没有找到相关文章

最新更新