Python 如何实现随机hough变换来检测直线?

Python 如何实现随机hough变换来检测直线?,python,opencv,image-processing,computer-vision,Python,Opencv,Image Processing,Computer Vision,我能够使用Opencv的“cv2.HoughLines”来检测图像中的线条。但我想知道如何使用opencv python实现随机化Hough变换来检测线条,因为文献综述称RHT的性能优于HT。有人能帮我吗 这是我的照片 在使用以下代码之后 lines = cv2.HoughLines(imgray, 1, np.pi / 180, 300) for rho, theta in lines[0]: a = np.cos(theta) b = np.sin(theta) x0 = a * rh

我能够使用Opencv的“cv2.HoughLines”来检测图像中的线条。但我想知道如何使用opencv python实现随机化Hough变换来检测线条,因为文献综述称RHT的性能优于HT。有人能帮我吗

这是我的照片

在使用以下代码之后

lines = cv2.HoughLines(imgray, 1, np.pi / 180, 300)
for rho, theta in lines[0]:
 a = np.cos(theta)
 b = np.sin(theta)
 x0 = a * rho
 y0 = b * rho
 x1 = int(x0 + 1000 * (-b))
 y1 = int(y0 + 1000 * (a))
 x2 = int(x0 - 1000 * (-b))
 y2 = int(y0 - 1000 * (a))

cv2.line(imgray, (x1, y1), (x2, y2), (0, 0, 255), 2)
我得到了以下结果

改用概率霍夫变换


教你如何实现如此复杂的算法远远超出了这个社区的范围。这是你必须自己学习的东西。我相信你会在网上找到一些源代码和论文。你可以在路上的小步骤上寻求帮助,但没有人会在这里写200页。我如何才能检测到多行而不仅仅是一行?你很可能检测到多行,但至少与你的帖子中的格式相同。当调用cv2时,代码只会画一行。行在for循环之外…概率霍夫变换是不同的来自RHT。@annie,这就是我写“取而代之”的原因。它的性能更好,您无需实现任何功能。至少RHT是一种概率论的HT,也许反过来不是这样。它更快。我从未见过两者之间的基准,也许你可以创建一个