gpt4 book ai didi

python - HoughLinesP 使用轨迹栏

转载 作者:行者123 更新时间:2023-12-02 16:08:41 25 4
gpt4 key购买 nike

我正在使用 HoughLinesP opencv 函数进行边缘检测。我想使用轨迹栏来估计此函数参数的良好值。我有以下代码:

def compute_edgelets(image):

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
global edges
edges = cv2.Canny(gray, 50, 150, apertureSize=3)


init_thresh = 50
max_thresh = 1000
init_min_line = 10
max_min_line = 1000
init_max_line = 1
max_max_line = 100

cv2.namedWindow("Result")
cv2.createTrackbar("threshold", "Result", init_thresh, max_thresh, on_change)
cv2.createTrackbar("min", "Result", init_min_line, max_min_line, on_change)
cv2.createTrackbar("max", "Result", init_max_line, max_max_line, on_change)

while True:
cv2.imshow("Result", image)
key = cv2.waitKey(1)
if key == ord('q'):
break
cv2.destroyAllWindows()

on_change 函数:
def on_change(x):

threshold = cv2.getTrackbarPos("threshold", "Result")
min_line_length = cv2.getTrackbarPos("min", "Result")
max_line_gap = cv2.getTrackbarPos("max", "Result")

lines = cv2.HoughLinesP(edges, 1, np.pi / 180, threshold, min_line_length, max_line_gap)
for x in range(0, len(lines)):
for x1, y1, x2, y2 in lines[x]:
cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2)

但是,此代码无法按预期工作 - 参数似乎无法正常工作,在稍微更改轨迹栏上的值后,我得到以下类型错误:

TypeError: object of type 'NoneType' has no len()



我的轨迹栏有什么问题吗?

最佳答案

无法告诉您发生这种情况的确切原因(因为您没有提供所有相关数据来重现此确切问题),但幸运的是,根本问题很容易查明。

该错误是指对 len 的调用示例代码中唯一使用它的地方是获取 cv2.HoughLinesP 结果的长度.问题是你试图取 None 的长度,这没有意义。

在 Python 中,当您调用 cv2.HoughLinesP 时使用一组禁止它查找任何行的参数,它将返回 None您可以迭代而不是一系列行参数。我们可以很容易地演示一些这样的情况:

  • 处理空图像:
    import numpy as np
    import cv2
    print cv2.HoughLinesP(None, 1, np.pi/180, 50, 10, 1)

    输出 None
  • 处理全黑图像:
    import numpy as np
    import cv2
    print cv2.HoughLinesP(np.zeros((100,100,1), np.uint8), 1, np.pi/180, 50, 10, 1)

    输出 None

  • 在您的示例代码中,您不处理这种情况,您直接尝试获取结果的长度。既然不能申请 lenNone ,你会得到一个错误。因此,您需要对代码进行一些调整......至少像
    if lines is None:
    return

    关于python - HoughLinesP 使用轨迹栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60007804/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com