Find straight line segments in image using OpenCV

Using OpenCV's findContours() I have a list of contours in an image. I'm interested only in the straight lines, so if they are too 'squiggly' they should be rejected. The question is how to evaluate how straight each contour is?

I looked at fitLine(), but there doesn't appear to be a goodness-of-fit measure returned. I could evaluate this myself using the returned line.

I looked at arcLength() with the aim to compare this to the bounding rectangle dimensions, but even for somewhat straight lines, the arc length can be relatively long if the contour points are dense.

I could find the convex hull and compare to the bounding rectangle dimensions, but I'd have to analyze the convexity defects.

Is there a moment that would be useful here?


  • Find the contours as you are doing now
  • Find the straight lines in the image using HoughLines()
  • Compute the overlap between the contours and the straight lines

  • Take two points (with for instance cv::approxPoly ) on your contour and compute their absolute distance. Then go through the contour points between the two points and add up all the distances. If the difference between distance over the contour and the absolute distance is bigger than a certain threshold you can reject it.

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

    上一篇: 一般轮廓检测

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