使用OpenCV在图像中查找直线段

时间:2014-07-29 16:53:53

标签: opencv image-processing contour

使用OpenCV的findContours()我有一个图像轮廓列表。我只对直线感兴趣,所以如果他们太直率了,那么他们也会感到沮丧。他们应该被拒绝。问题是如何评估每个轮廓的直线度?

我查看了fitLine(),但似乎没有返回适合度数。我可以使用返回的行来自行评估。

我查看了arcLength(),目的是将其与边界矩形尺寸进行比较,但即使对于某些直线,如果轮廓点密集,弧长也可能相对较长。

我可以找到凸包并与边界矩形尺寸进行比较,但我必须分析凸性缺陷。

这里有一个有用的时刻吗?

2 个答案:

答案 0 :(得分:3)

  1. 查找正在进行的轮廓
  2. 使用HoughLines()
  3. 在图像中查找直线
  4. 计算轮廓和直线之间的重叠

答案 1 :(得分:1)

在轮廓上取两个点(例如cv::approxPoly)并计算它们的绝对距离。然后浏览两点之间的轮廓点并将所有距离相加。如果轮廓上的距离与绝对距离之间的差值大于某个阈值,则可以拒绝它。