OpenCV 2.4.9中的概率霍夫变换(Python)
我想问的是关于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
,你就得通过参数名来传递它们。