OpenCV霍夫线未显示

时间:2017-07-17 17:20:55

标签: python opencv computer-vision

我想从以下图片中获取线条: original

我的代码使用以下函数:

import cv2
lines = cv2.HoughLinesP(image, .1, np.pi/360, 10,
                        minLineLength, maxLineGap)

其中minLineLength = 20,maxLineGap = 10.我获得以下内容: after hough lines

为什么水平线在这种情况下不显示,尽管肉眼可以清楚看到?

2 个答案:

答案 0 :(得分:1)

问题是您用于rho的解决方案。

0.1的分辨率非常小。实际上,对于大小为(N, N)像素的图像,rho的可能值的数量为N * N * sqrt(2) / rho_resolution(有时这是取决于角度定义方式的两倍)。

可能值的数量在Hough累加器中实现为bin。该数字越大,图像的不同像素积累的相同的二进制数就越少。 rho的分辨率非常小,你最终会得到一个稀疏累加器,这里有一些低值。

将此值提高到1或2像素的分辨率,您应该会看到更多显着的线条。

答案 1 :(得分:0)

如果HoughLinesP() 检测到某条线,即使它清晰可见,也是因为该线肯定不符合您的某些条件。最有可能是您的minLineLengthmaxLineGap。如果减少这些标准,您将开始检测更多行。

此外,正如一些评论所示,您的rho参数可能太小(0.1)。由于该参数是在像素中测量的,因此给它一个非整数值可能会产生意外结果,尝试给它一个值为1.

如果您愿意,可以从他们解释的文档中查看此example,并说明如何同时使用HoughLines()HoughLinesP()