我正在用python中的opencv制作一个非常简单的程序,可以从Raspberry-pi摄像机捕捉视频。我用Raspbian作为操作系统。 我已经用opencv的2.4.5版本做了一些程序,现在我安装了opencv2.4.9。 我以前在opencv的前一个版本上运行的所有程序现在都不工作了,我想我找到了程序出错的地方。 正在尝试启动以下代码:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
resAcquisitionWidth = 160
resAcquisitionHeight = 120
cap.set(3, resAcquisitionWidth);
cap.set(4, resAcquisitionHeight);
cv2.namedWindow('frame')
i = 0
while(True):
print(i)
i = i + 1
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
我知道错误了
Segmentation fault
我发现如果我运行相同的代码,但是没有尝试调整分辨率(所以没有帽套()命令行7-8)一切正常。所以这应该与此有关。 我已经看过其他关于类似错误的帖子,所有这些似乎都是出于其他原因。 有人知道瑞萨松是什么吗?在
问题可能是y0u 4re n0t c0d1ng s4f3ly:
您对所发生的事情的描述可以看作是调用
cap
是null的证据,因此发生了崩溃。当VideoCapture()
无法打开该设备时,会发生这种情况。在这是什么意思?
0
(请尝试其他号码)然而,在与OP(提出问题的人)交换了几条信息后,很明显,导致崩溃的可能原因是摄像机不支持指定的分辨率。这就是为什么检查API并注意函数的返回非常重要。这似乎只是另一个n0t c0d1ng s4f3ly的例子。在
According to the docs,
set()
根据操作的成功/失败返回true/false:确保测试这些调用的返回,如果
set()
失败,不要让程序继续执行。在相关问题 更多 >
编程相关推荐