OpenCV - 车道检测'numpy.ndarray'错误

时间:2017-02-23 14:58:39

标签: python opencv numpy image-processing

我正在尝试使用python中的opencv库运行车道检测代码。但我收到numpy.ndarray错误:

TypeError: 'numpy.ndarray' object is not callable
 File "lane_detect.py", line 10, in <module>
    line(img,(x1,y1),(x2,y2),(0,255,0),2)

以下是我尝试运行的代码:

from cv2 import * 
from numpy import *
from matplotlib import pyplot as plt

img = imread("Lane1.png", 0)
edges = Canny(img,100,200)
lines = HoughLinesP(edges,1,pi/180,100,minLineLength=100,maxLineGap=10)
for line in lines:
    x1,y1,x2,y2 = line[0]
    line(img,(x1,y1),(x2,y2),(0,255,0),2)

'''for line in lines:
   for ex in line:
    print ex'''
imwrite('Lane1.png', img)
namedWindow("Image", WINDOW_AUTOSIZE)
namedWindow("Canny", WINDOW_AUTOSIZE)
imshow("Canny", edges)
imshow("Image", img)
waitKey(0)
destroyAllWindows()

代码中可能存在其他错误。

请在代码中提出一些更改。

2 个答案:

答案 0 :(得分:2)

我认为你误解了那里发生的事情。 lines是检测到的霍夫线的列表。您没有构建它们,但它们被算法检测到。我认为在循环中你试图将它们绘制到图像上,但这里发生名称冲突。 for循环中的line变量会覆盖您可能想要用来绘制线的cv2.line函数。因此,要么选择其他变量名称,要么调用cv2.line进行绘制。

答案 1 :(得分:0)

将代码中的第10行替换为:

cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

您想使用HoughLinesP()绘制找到的行。因此cv2.line()为你做了。您可能在编码时忽略了它