OpenCV连接组件的输出

时间:2012-12-05 08:07:08

标签: c++ opencv contour

我想重现有关已发现的连接组件here的示例(代码不再在线,我想使用C ++ API)。

我使用了以下对findCountours的调用:

findContours(img, contours, hierarchy, CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);

其中img是通过对文章中提出的图像进行阈值处理获得的:

input image http://img8.imageshack.us/img8/7249/78825396.png

预期输出为:

output image http://img8.imageshack.us/img8/5142/resultw.png

根据CV_RETR_CCOMP的描述,我希望有6个顶级轮廓,对应于结果图像的6种颜色。

它在文档中说连接组件是 在顶层,孔是连接组件(CC)的子项。

然而,从hierarchy的探索中,我可以看到前三个轮廓(0,1,3)既没有父也没有孩子。它们对应于'a'字母中的孔。其他轮廓位于层次结构中(请参阅末尾的转储)。轮廓3是包含所有图像的“顶级”CC。其他轮廓是预期CC的外部轮廓。

Contour 0: next: 1,  previous: -1,  child: -1,  parent: -1,  size: 4
Contour 1: next: 2,  previous: 0,  child: -1,  parent: -1,  size: 4
Contour 2: next: 3,  previous: 1,  child: -1,  parent: -1,  size: 4
Contour 3: next: -1,  previous: 2,  child: 4,  parent: -1,  size: 4
Contour 4: next: 5,  previous: -1,  child: -1,  parent: 3,  size: 121
Contour 5: next: 6,  previous: 4,  child: -1,  parent: 3,  size: 80
Contour 6: next: 7,  previous: 5,  child: -1,  parent: 3,  size: 18
Contour 7: next: 8,  previous: 6,  child: -1,  parent: 3,  size: 18
Contour 8: next: 9,  previous: 7,  child: -1,  parent: 3,  size: 18
Contour 9: next: -1,  previous: 8,  child: -1,  parent: 3,  size: 8

我已经使用OpenCV 2.2和2.3.1测试了代码。 我用一个更简单的图像(一个带圆孔的圆)测试并得到了相同的结果(3个轮廓:0是孔,1是顶层,2是外轮廓)。

有人可以解释这与CV_RETR_CCOMP的文件有什么关系?

0 个答案:

没有答案