在OpenCV中关闭轮廓曲线

时间:2014-01-30 23:09:56

标签: opencv contour curve edge-detection

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

我该怎么做?

考虑事项:

  • 扩张 - 我见过的例子在Canny之后显示了这一点,虽然在我看来,在findContours
  • 之后这样做更有意义
  • 凸壳 - 可能会起作用,虽然我真的想完成曲线
  • 形状简化 - 相关,但不完全是我想要的

2 个答案:

答案 0 :(得分:1)

使用PolyLine方法绘制轮廓

cv2.PolyLine(img, points, is_closed=True, 255, thickness=1, lineType=8, shift=0)

阅读文档以获取更多详细信息:http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html

Mark回答是否解决了您的问题。如果没有,请告诉我。

答案 1 :(得分:0)

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