我正在尝试使用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()
代码中可能存在其他错误。
请在代码中提出一些更改。
答案 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()
为你做了。您可能在编码时忽略了它