从网络摄像头执行Hough变换时,Python OpenCV崩溃
我想我已经解决了这个问题。我正在使用IP网络摄像头流,进行canny边缘和hough变换。然后显示叠加的变换和原始图像。所以看起来很像普通的网络摄像头,但是水平线被高亮显示。 我在图像中寻找水平线。只要有水平线,它就可以正常工作。如果启动凸轮时没有任何水平线,则会出现错误:从网络摄像头执行Hough变换时,Python OpenCV崩溃,python,opencv,Python,Opencv,我想我已经解决了这个问题。我正在使用IP网络摄像头流,进行canny边缘和hough变换。然后显示叠加的变换和原始图像。所以看起来很像普通的网络摄像头,但是水平线被高亮显示。 我在图像中寻找水平线。只要有水平线,它就可以正常工作。如果启动凸轮时没有任何水平线,则会出现错误: Traceback (most recent call last): File "/home/Desktop/hough.py", line 16, in <module> for line in li
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__'
显然
cv2.HoughLinesP
在没有行时返回None
在第16行,您尝试访问行[0]
,这实际上调用了行。由于行
的类型为非类型
,因此它没有\uuuu getitem\uuuu
方法
要解决此问题,例如,您可以在访问行的项目之前检查行是否为None
:
if lines:
for line in lines[0]
[...]
(请注意,它还将检查行是否不是空列表)我尝试了这一点,但现在我得到了一个新错误:if lines:ValueError中的第16行:包含多个元素的数组的真值不明确。使用a.any()或a.all()现在就知道了。。我使用了If-line:这很有效。Thanks@JDD您的意思是如果行不是None:
否则它将仅在它是None时继续,并且将返回与第一条注释中写入的错误相同的错误。
if lines:
for line in lines[0]
[...]