Opencv 带有像素线的Houghlines2

Opencv 带有像素线的Houghlines2,opencv,line,detection,hough-transform,Opencv,Line,Detection,Hough Transform,我试图检测带有houghlines2的线,但我的线是像素化的,因此houghlines2无法将其识别为线。发生的事情是我检测到了一部分线,但没有检测到整条线——如图所示,红线填充了越来越多的线 我试着模糊一点界线,但到目前为止没有运气 代码: 有人知道如何解决这个问题吗?我和坎尼一起工作过,也没有运气 编辑 当我测量油漆中的线条时,假设它是30。(我通过sqrt(长度^2+长度^2)完成此操作)。然后,小时线的最小长度2概率必须更短。我想这是我的问题,我不知道为什么它要短得多。有什么想法吗?你

我试图检测带有houghlines2的线,但我的线是像素化的,因此houghlines2无法将其识别为线。发生的事情是我检测到了一部分线,但没有检测到整条线——如图所示,红线填充了越来越多的线

我试着模糊一点界线,但到目前为止没有运气

代码:

有人知道如何解决这个问题吗?我和坎尼一起工作过,也没有运气

编辑


当我测量油漆中的线条时,假设它是30。(我通过sqrt(长度^2+长度^2)完成此操作)。然后,小时线的最小长度2概率必须更短。我想这是我的问题,我不知道为什么它要短得多。有什么想法吗?

你可以尝试缩小你的形象。。。由于这一点,您的线条将是一个像素宽! 理论上,我们可以找到一组Hough变换参数来检测直线。
您可以尝试在代码中用CV_HOUGH_MULTI_SCALE替换CV_HOUGH_PROBABILISTIC,这将尝试查找不同比例的行。

以下答案基于我从您的问题中收集的信息

所以它检测的是两条线而不是一条线,对吗? 在检测到的两个端点中(使用概率标志),比较四组线端点(每条线将有两个端点)。两个点之间的距离最小。将这两个合并得到三个点。现在的方法是考虑其他两点并画一条线。< /P>
或者对从Hough线检测得到的四个端点使用直线拟合功能(OpenCV有一个)。cvFitLine()返回直线的向量表示形式-无端点。因此,在相互距离最远的hough线端点的坐标处剪裁拟合线。

您需要修改rho和theta分辨率。将rho设置为2,而不是1,θ设置为PI/90。不幸的是,这没有帮助。这有帮助,我可以检测到线。但是虚线有一个问题。虚线的像素较少,因此必须降低阈值。了解霍夫的工作原理是个好主意。试试wiki hough,仔细阅读。嗨,瓦西里。我几乎让它工作了。不过我有个问题。当我对图像进行ROI时,它不再匹配,即使它包含线条。知道为什么吗?它是如此像素化以至于找不到任何线条。我必须先把它弄模糊才能找到任何线条