2014-01-30 99 views
12

我使用OpenCV(Canny + findCountours)来查找对象的外部轮廓。绘制的曲线通常几乎但不是完全封闭。我想关闭它 - 找到它所在的区域。在OpenCV中关闭轮廓曲线

我该怎么做?

的事情考虑:

  • 扩张 - 我坎尼后看到显示这个例子,虽然它似乎对我来说更有意义findContours
  • 凸包后,要做到这一点 - 可能会奏效,虽然我真的想完成一个曲线
  • 形状简单化 - 有关,但不正是我想要
+5

[approxPoly](http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#approxpolydp)在findContours()上提供此功能 – berak

+7

只需复制轮廓列表的第一个元素结束? –

+0

MartinBeckett,berak,我认为这两个评论都应该是答案, –

回答

0

有点晚,但我不得不处理这个自己。如果在Canny边缘检测之前执行开启操作(侵蚀之后扩张),则检测到的边缘应该更连续,从而获得更好的轮廓。这种方法看起来相当健壮。我在another post中提到过这个问题,并在a recent question上发布了代码示例。