opencv中是否有任何算法只能检测比opencv中给定阈值更厚的更粗的水平线(直线)。检测到的线的厚度应超过给定值。通常在houghLines函数中没有参数来给出阈值厚度。 [无论如何,我的目的是检测文档文章中的所有背景线(超出一定高度和宽度的空白区域),并获得这些检测到的线条的平均厚度。如果更明确我的最终目的是计算文档中文本行之间的平均距离]
答案 0 :(得分:2)
实现此目标的标准方法是侵蚀。如果你吃掉所有物体的外部5个像素,并且你仍然有一条线,那么之前的线条至少有11个像素宽。
答案 1 :(得分:0)
猜测您想要找到的最粗线的像素数。侵蚀所有其他对象的所有剩余像素。在这种情况下,你将留下最粗的链接的几个像素。然后你可以在那上绘制hough线。
bool done;
do
{
cv::morphologyEx(img, temp, cv::MORPH_OPEN, element);
cv::bitwise_not(temp, temp);
cv::bitwise_and(img, temp, temp);
cv::bitwise_or(skel, temp, skel);
cv::erode(img, img, element);
double max;
cv::minMaxLoc(img, 0, &max);
done = (max == 0); // max cab be the threshold you want to use
} while (!done);
更多阅读检查形态骨架操作: https://en.wikipedia.org/wiki/Morphological_skeletona
http://felix.abecassis.me/2011/09/opencv-morphological-skeleton/ 希望它有所帮助.-查看此链接,它将帮助您了解正在完成的工作。