OpenCV 2.4.9中的概率霍夫变换(Python)

4 投票
1 回答
2548 浏览
提问于 2025-04-18 23:16

我想问的是关于OpenCV 2.4.9中的霍夫变换(Hough transform)的问题。

这里有一个教程的摘录:

cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]]) → lines

我不太明白“lines[,”是什么意思。我是这样使用这个函数的:

lines = cv2.HoughLinesP(edges, 1, np.pi/180, 25, 2, 25, 115)

但是这里的参数“2”到底是什么意思呢?我发现当我给这个参数赋不同的值时,似乎没有什么变化。

谢谢..

1 个回答

6

你需要这样使用它

lines = cv2.HoughLinesP(edge_image, rho=1.0, theta=math.pi/180.0,
                                    threshold=thresholdVal,
                                    minLineLength=minlinelengthVal,
                                    maxLineGap=maxlinegapVal)

如果你了解一下霍夫变换和概率霍夫变换,你会发现有一个“累加器”用来收集所有的边缘点。rho是累加器的距离分辨率,单位是像素,而theta是累加器的角度分辨率,单位是弧度。

至于cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]]) → lines的文档,它算是一种函数重载,但因为Python支持可选参数,所以可以这样使用。lines[的意思是你可以传入一个numpy数组,用来存储这些线条。所以,如果你想传其他参数而不传lines,你就得通过参数名来传递它们。

撰写回答