私は問題を理解したと思います。私はIPWebカメラストリームを使用しており、キャニーエッジとハフ変換を行っています。次に、オーバーレイされた変換と元の画像を表示します。通常のWebカメラとほとんど同じように見えますが、水平線が強調表示されています。画像で横線を探しています。水平線がある限り、問題なく動作します。カムを開始し、水平線がない場合、エラーが発生します。
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