opencv中的重复轮廓

Posted

技术标签:

【中文标题】opencv中的重复轮廓【英文标题】:Duplicate contours in opencv 【发布时间】:2014-01-14 21:56:58 【问题描述】:

我在使用 opencv 中的 findContours 时遇到了一些问题。输出中有太多数据,我知道正确使用层次结构是关键。鉴于以下来自 opencv 文档的图片:

我想绘制除 2a 和 3a 之外的所有轮廓。遍历层次结构和 findContour 参数以实现该结果的正确方法是什么?

【问题讨论】:

可以分享原图吗? 上面不是有白线和红色数字的黑图吗?如果没有,可以在页面顶部找到原图HERE 我认为红色数字是您故意添加的,以说明您要检测哪些轮廓。 在同一教程中,阅读有关标志的信息:RETR_CCOMP。我希望它会给你一个两级层次结构,其中 2a 和 3a 属于 2 级,而所有其他都是 1 级。(我没有尝试过,所以我可以确定。自己检查) 【参考方案1】:

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

contourArea(contour, true);

当然,使用层次结构也是一种好方法,但我认为这种方法更易于理解和实现。

【讨论】:

根据我的需要,这是干净的,并且工作准确率约为 85%。我尝试在混合中添加骨架化(如上所述),但输出太少了。我有几条双线,但与以前不同。谢谢!【参考方案2】:

添加到 @Michael Burdinov 所说的,返回对象或持有的 +ve 和 -ve 值

【讨论】:

以上是关于opencv中的重复轮廓的主要内容,如果未能解决你的问题,请参考以下文章

[OpenCV-Python] OpenCV 中的图像处理 部分 IV (四)

如何利用OPENCV的matchShapes进行轮廓匹配

opencv中的轮廓比较

如何利用OPENCV的matchShapes进行轮廓匹配?

OpenCV 图像轮廓

Python-OpenCV中的图像轮廓检测