使用OpenCV的findContours()我有一个图像轮廓列表 . 我只对直线感兴趣,所以如果它们太'曲折',它们应该被拒绝 . 问题是如何评估每个轮廓的直线程度?
我查看了fitLine(),但似乎没有返回合适的拟合度量 . 我可以使用返回的行自行评估 .
我查看了arcLength(),目的是将其与边界矩形尺寸进行比较,但即使对于某些直线,如果轮廓点密集,弧长也可以相对较长 .
我可以找到凸包,并与边界矩形尺寸进行比较,但我必须分析凸面缺陷 .
有没有时间在这里有用?
找到你现在正在做的轮廓
使用HoughLines()查找图像中的直线
计算轮廓和直线之间的重叠
在轮廓上取两个点(例如 cv::approxPoly )并计算它们的绝对距离 . 然后浏览两点之间的轮廓点并将所有距离相加 . 如果轮廓上的距离与绝对距离之间的差值大于某个阈值,则可以拒绝它 .
cv::approxPoly
2 回答
找到你现在正在做的轮廓
使用HoughLines()查找图像中的直线
计算轮廓和直线之间的重叠
在轮廓上取两个点(例如
cv::approxPoly
)并计算它们的绝对距离 . 然后浏览两点之间的轮廓点并将所有距离相加 . 如果轮廓上的距离与绝对距离之间的差值大于某个阈值,则可以拒绝它 .