在OpenCV中封闭轮廓曲线

13

我正在使用OpenCV(Canny + findCountours)查找物体的外部轮廓。绘制的曲线通常几乎但不完全封闭。 我想将其关闭 - 找到它所限制的区域。

我该怎么做?

考虑的事情:

  • 膨胀 - 我看过的示例在Canny之后显示这一点,尽管在findContours之后进行这一点似乎更有意义
  • 凸包 - 可能有效,但我真的想完成一个曲线
  • 形状简化 - 相关,但不完全是我想要的

5
approxPoly函数在findContours()函数的基础上提供了这个功能。 - berak
7
将轮廓列表的第一个元素复制到末尾? - Martin Beckett
MartinBeckett,berak,我认为两个评论都应该是答案,对两位点赞。 - Abid Rahman K
1
SRobertJames,您能提供输入和期望的输出图像吗? - Eren V.
2个回答

1

0
有点晚了,但我刚好自己处理过这个问题。如果在进行Canny边缘检测之前执行开运算(侵蚀后膨胀),则检测到的边缘应该更连续,从而产生更好的轮廓。这种方法似乎相当健壮。我在另一篇帖子中提到了这一点,并在最近的一个问题的代码示例中发布了一个代码示例。

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