在OpenCV中关闭轮廓曲线

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

我该怎么做呢?

考虑的事情:

  • 扩张 - 我看过的例子在Canny之后显示了这一点,尽管在我看来,在findContours之后做这件事更有意义
  • 凸壳 - 可能工作,但我真的想完成一条曲线
  • 形状简化 - 相关,但不完全是我想要的

  • 使用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

    马克回答说它是否解决了你的问题。 如果没有,然后让我知道。


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

    链接地址: http://www.djcxy.com/p/58721.html

    上一篇: Closing a contour curve in OpenCV

    下一篇: filtering convex hulls and convexity defects with OpenCV