我想我已经找到了问题所在。我正在使用 IP 网络摄像头流,进行精巧的边缘和霍夫变换。然后显示叠加的变换和原始图像。所以几乎看起来就像普通的网络摄像头,但水平线被突出显示。我正在寻找图像中的水平线。只要其中有水平线,它就可以正常工作。如果我启动凸轮并且没有任何水平线,我会收到错误消息:
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