OpenCV中的重复轮廓

5
我在使用opencv的findContours功能时遇到了一些问题。输出的数据量太多,我知道正确使用层次结构是关键。下面是来自opencv文档的图片: Opencv Docs 我想绘制除了2a和3a之外的所有轮廓。请问如何正确遍历层次结构和设置findContour参数以实现该结果?

你能分享原始图像吗? - karlphillip
上面不是有一张黑色图片,上面有白线和红色数字吗?如果没有,原始图片可以在页面顶部这里找到。 - Joe Andolina
我认为你有意添加了红色数字,以说明你试图检测哪些轮廓。 - karlphillip
在同一教程中,了解标志:RETR_CCOMP。我希望它能为您提供一个两级层次结构,其中2a和3a属于第2级,而所有其他内容都属于第1级。(我还没有尝试过,所以不能确定。请自行检查) - Abid Rahman K
2个回答

9

由findContours函数找到的轮廓有方向。对象是逆时针的,洞是顺时针的。因此,如果您检查每个轮廓的带符号面积,可以通过其符号知道这是否是一个洞。轮廓的带符号面积可以按以下方式计算:

contourArea(contour, true);

当然,使用层次结构也是一个好方法,但我认为这种方法更简单易懂,易于实施。

对于我的需求来说,这个程序很干净,并且大约有85%的准确率。我尝试将骨架化(如上所建议)添加到混合物中,但输出太少了。我有一些双线,但不像以前那样多。谢谢! - Joe Andolina

1

在Michael Burdinov所说的基础上,返回对象或持有者的正值和负值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接