ValueError: too many values to unpack - OpenCV Python HoughLines

ValueError: too many values to unpack - OpenCV Python HoughLines

感谢 OpenCV 的 HoughLine,我正在尝试从图像中检测到的直线中获取 rho 和 theta。

lines = cv.HoughLinesP(edges, 1, np.pi/180, hThreshold, maxLineGap=lineGap)
if lines is not None:
    for line in lines:
       rho, theta = line[0]

但是最后一行出现这个错误。

ValueError: too many values to unpack

你知道如何解决这个问题吗?或者另一种获取 rho 和 theta 值的方法?

PS: 我用 pip3 install opencv-python --user

安装了 opencv-python
上面代码中的

line[0]是一个包含4个值的列表。这就是为什么,您会遇到以上错误。您正在做的是尝试使用 Probabilistic Hough lines 检测线,即

lines = cv2.HoughLinesP(binarized image, ro accuracy, theta accurancy, threshold, minimum line length, max line gap)

正确代码:

lines = cv.HoughLinesP(edges, 1, np.pi/180, hThreshold, maxLineGap=lineGap)
for line in lines:
    x1, y1, x2, y2 = line[0]

但是,您要做的是使用 Hough lines 进行线检测。因此,将您的代码从 lines = cv.HoughLinesP(edges, 1, np.pi/180, hThreshold, maxLineGap=lineGap) 更改为

lines = cv2.HoughLines(edges, 1, np.pi / 180, 220)
for line in lines:
    rho, theta = line[0]
    print(rho, theta)