문제점을 발견했다고 생각합니다. 저는 IP 웹캠 스트림을 사용하고 있습니다. 그런 다음 오버레이 된 변환과 원본 이미지를 보여줍니다. 따라서 보통 웹캠처럼 보이지만 수평선이 강조 표시됩니다. 저는 이미지에서 수평선을 찾고 있습니다. 그 안에 수평선이있는 한 잘 작동합니다. 캠을 시작하고 수평선이 없으면 오류가 발생합니다.웹캠에서 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
(빈리스트가 아닌 그것은 또한 그 라인을 확인합니다주의)
이:
는 예를 들어 라인is not None
해당 항목에 액세스하기 전에 확인 할 수 있습니다,이 문제를 해결하려면 하지만 지금은 새로운 오류가 발생합니다 : line 16, in지금 얻었습니다. If lines is None : 그 것이 효과가있었습니다. 감사합니다 – JDD
@ JDD 만약'lines이 None이 아니라면'을 의미합니다. 그렇지 않으면'none '이 아니고 첫 번째 주석에 쓰여진 것과 같은 오류를 반환 할 때만 계속됩니다. – WuerfelDev