我想从以下图片中获取线条: original
我的代码使用以下函数:
import cv2
lines = cv2.HoughLinesP(image, .1, np.pi/360, 10,
minLineLength, maxLineGap)
其中minLineLength
= 20,maxLineGap
= 10.我获得以下内容:
after hough lines
为什么水平线在这种情况下不显示,尽管肉眼可以清楚看到?
答案 0 :(得分:1)
问题是您用于rho的解决方案。
0.1的分辨率非常小。实际上,对于大小为(N, N)
像素的图像,rho的可能值的数量为N * N * sqrt(2) / rho_resolution
(有时这是取决于角度定义方式的两倍)。
可能值的数量在Hough累加器中实现为bin。该数字越大,图像的不同像素积累的相同的二进制数就越少。 rho的分辨率非常小,你最终会得到一个稀疏累加器,这里有一些低值。
将此值提高到1或2像素的分辨率,您应该会看到更多显着的线条。
答案 1 :(得分:0)
如果HoughLinesP()
不检测到某条线,即使它清晰可见,也是因为该线肯定不符合您的某些条件。最有可能是您的minLineLength
或maxLineGap
。如果减少这些标准,您将开始检测更多行。
此外,正如一些评论所示,您的rho参数可能太小(0.1)。由于该参数是在像素中测量的,因此给它一个非整数值可能会产生意外结果,尝试给它一个值为1.
如果您愿意,可以从他们解释的文档中查看此example,并说明如何同时使用HoughLines()
和HoughLinesP()
。