使用Hough直线函数时列表坐标绘图触发TypeError错误求助
问题解决:TypeError: 'numpy.ndarray' object is not callable
错误原因
你调用cv2.line()时存在语法错误:将图像数组img当作函数调用(img(x1, y1)),但img是numpy数组,不支持这种调用方式。cv2.line()的正确参数顺序应为:目标图像、起点坐标、终点坐标、颜色、线条粗细。
修正后的代码片段
将绘制直线的循环部分修改为:
if lines is not None: # 先判断lines是否为空,避免空指针报错 for line in lines: x1, y1, x2, y2 = line[0] cv2.line(img, (x1, y1), (x2, y2), (0,255,0), 2)
额外优化建议
- 增加
lines is not None判断:若Hough变换未检测到直线,lines会返回None,直接循环会触发新错误。 - 若需保留原始图像,可创建副本(比如
img_copy = img.copy()),在副本上绘制直线,避免每次循环中原始图像被持续修改。
内容的提问来源于stack exchange,提问作者Eren Yanic
相关产品推荐
相关产品推荐

