【发布时间】:2015-01-21 11:36:31
【问题描述】:
我正在尝试在网络摄像头上使用 Opencv 和 Python 获取霍夫线。
但是我收到一个错误,因为 Traceback(最近一次调用最后一次):文件“C:/Python27/Hough_video_try.py”,第 14 行,对于 rho,theta 在行 [0]:TypeError:'NoneType' 对象没有属性“getitem”
下面是我的代码,请帮忙
import numpy as np
import cv2
cam = cv2.VideoCapture(0)
while (True): s, img = cam.read()
winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.WINDOW_AUTOSIZE)
edges = cv2.Canny(img,100,200)
lines = cv2.HoughLinesP(edges,1,np.pi/180,2,None,30,1)
if lines is None:
for rho,theta in lines[0]:
pt1 = (line[0],line[1])
pt2 = (line[2],line[3])
cv2.line(img, pt1, pt2, (0,0,255), 3)
cv2.imshow('edges',edges)
cv2.imshow('original',img)
if cv2.waitKey(1) & 0xff == ord('q'):
break
cam.release()
cv2.destroyAllWindows()
【问题讨论】:
-
哪一行触发了这个错误?
-
使用
if not lines is None,处理一个None对象有什么乐趣? -
显然
lines is None;事实上,你已经明确检查了if lines is None,所以你应该真的知道这一点。你为什么要索引到None?!你的意思是if lines is not None? -
这是我的一个愚蠢的错误。我在检查一个错误的条件。但是现在我遇到了一个特殊的错误,因为 Traceback(最近一次调用最后一次):文件“C:/Python27/Hough_video_try.py”,第 14 行,in for rho,theta in lines[0]: ValueError: too many values to unpack我在正确的条件下使用了与上面给出的相同的代码。请帮我解决这个错误
-
@Anurag 这可能是因为lines[0]返回的值多于2,所以返回的值不能只适合2个变量,我猜它返回4个值,请通过运行确认len(lines[0]) 它会给你一个没有的计数。返回的值,那么您可以使用 w,x,y,z = lines[0] 但不可以。变量的数量总是取决于函数调用的返回元素的数量。
标签: python opencv numpy hough-transform