3
我想我已經找到了問題。我正在使用IP攝像頭流,做一個canny邊緣和hough變換。然後顯示疊加變換和原始圖像。所以幾乎看起來像正常的網絡攝像頭,但水平線突出顯示。 我正在尋找圖像中的水平線。只要有水平線,它就可以工作。如果我開始凸輪和沒有任何水平線,我得到的錯誤:從網絡攝像頭做Hough變換時Python OpenCV崩潰
Traceback (most recent call last):
File "/home/Desktop/hough.py", line 16, in <module>
for line in lines[0]:
TypeError: 'NoneType' object has no attribute '__getitem__'
這裏是整個代碼。我對python和opencv非常陌生,所以我不知道如何解決這個問題。我希望在沒有任何水平線時顯示空白圖像,這樣我就可以擁有連續的流。
另外我的下一個任務是嘗試將圖像保存到視頻中。對此部分的任何幫助將不勝感激。謝謝!
import cv2
import urllib
import math
cv2.namedWindow('edge')
while True:
urllib.urlretrieve("http://192.168.5.1:8080/shot.jpg", 'cam.jpg')
img = cv2.imread('cam.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 80, 120, apertureSize=3)
lines = cv2.HoughLinesP(edges, 1, math.pi/2, 2, None, 30, 1)
for line in lines[0]:
pt1 = (line[0],line[1])
pt2 = (line[2],line[3])
cv2.line(img, pt1, pt2, (0,0,255), 3)
cv2.imwrite("road2.jpg", img)
cv2.imshow('edge', img)
ch = cv2.waitKey(5)
if ch == 27:
break
我試過了但現在我得到一個新的錯誤:第16行,在 if lines:ValueError:具有多個元素的數組的真值是不明確的。使用a.any()或a.all() –
JDD
現在明白了..我使用如果行數是無:並且工作。謝謝 – JDD
@JDD你的意思是'如果行不是無:'否則只有在沒有時纔會繼續,並且會返回與第一個註釋中相同的錯誤。 – WuerfelDev