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中的重复轮廓的主要内容,如果未能解决你的问题,请参考以下文章