Closing a contour curve in OpenCV

I'm using OpenCV (Canny + findCountours) to find external contours of objects. The curve drawn is typically almost, but not entirely, closed. I'd like to close it - to find the region it bounds.

How do I do this?

Things considered:

  • Dilation - the examples I've seen show this after Canny, although it would seem to me it makes more sense to do this after findContours
  • Convex hull - might work, though I'm really trying to complete a curve
  • Shape simplification - related, but not exactly what I want

  • Using PolyLine method to draw contours

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

    Read the docs for further details: http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html

    Mark answered if it resolved your problem. If not then let me know.


    A little late, but I just had to deal with this myself. If you perform an opening operation (erosion followed by dilation) prior to the Canny edge detection, the edges you detect should be more continuous, resulting in better contours. This method appears to be fairly robust. I mentioned this in another post and posted a code sample as part of a recent question.

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

    上一篇: 使用OpenCV在图像中查找直线段

    下一篇: 在OpenCV中关闭轮廓曲线