gio*_*gix 6 python opencv segmentation-fault raspberry-pi raspbian
我正在制作一个非常简单的程序,它使用在Python中使用opencv从Raspberry pi相机中捕获视频.我正在使用Raspbian作为操作系统.我已经用opencv的2.4.5版开发了一些程序,现在我已经安装了opencv 2.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()
Run Code Online (Sandbox Code Playgroud)
我收到了错误
分段故障
我发现如果我运行相同的代码,但没有尝试调整分辨率(所以没有7-8行的cap.set()命令)一切正常.所以它应该是与此相关的东西.我已经看过其他关于类似错误的帖子,所有这些似乎都是出于其他原因.有人知道什么是resasone可能?
问题可能是y0u 4re n0t c0d1ng s4f3ly:
\n\ncap = cv2.VideoCapture(0)\nif not cap:\n print "!!! Failed VideoCapture: unable to open device 0"\n sys.exit(1)\nRun Code Online (Sandbox Code Playgroud)\n\n您对正在发生的情况的描述可以被视为调用时cap为空的cap.set()证据,因此崩溃。VideoCapture()当无法打开该设备时会发生这种情况。
这是什么意思?
\n\n0(尝试其他号码);然而,在与OP(提出问题的人)交换了一些消息后,很明显,崩溃的可能原因是相机不支持指定的分辨率。这就是为什么检查 API 并了解函数的返回如此重要的原因。这确实似乎只是n0t c0d1ng s4f3ly的另一个例子。
\n\n根据 docs,set()根据操作的成功/失败返回 true/false:
\n\n\nPython:cv.SetCaptureProperty(捕获,property_id,值)\xe2\x86\x92 retval
\n
确保测试这些调用的返回,如果失败,不要让程序继续执行set()。
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |