gpt4 book ai didi

python - opencv 的段错误,在 Raspberry 上的 python 中

转载 作者:太空狗 更新时间:2023-10-30 00:06:58 24 4
gpt4 key购买 nike

我正在制作一个非常简单的程序,它使用 python 中的 opencv 从 Raspberry pi 相机捕获视频。我正在使用 Raspbian 作为操作系统。我已经用 2.4.5 版的 opencv 制作了一些程序,现在我已经安装了 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()

我得到了错误

Segmentation fault

我发现,如果我运行相同的代码,但不尝试调整分辨率(因此第 7-8 行没有 cap.set() 命令),一切正常。所以它应该与此有关。我已经看过其他关于类似错误的帖子,所有这些似乎都是出于其他原因。任何人都知道 resasone 可能是什么?

最佳答案

问题可能是y0u 4re n0t c0d1ng s4f3ly:

cap = cv2.VideoCapture(0)
if not cap:
print "!!! Failed VideoCapture: unable to open device 0"
sys.exit(1)

你对发生的事情的描述可以被视为当 cap.set() 被调用时 capnull 的证据,因此碰撞。当 VideoCapture() 无法打开该设备时会发生这种情况。

这是什么意思?

  • 相机不是设备0(尝试其他数字);
  • 相机可能未安装(驱动程序问题)或未正确连接到您的设备;
  • OpenCV 不支持相机。

但是,在与 OP(提出问题的人)交换了几条消息后,很明显崩溃的可能原因是相机不支持指定的分辨率。这就是为什么检查 API 并了解函数的返回如此重要的原因。这似乎真的只是 n0t c0d1ng s4f3ly 的另一种情况。

According to the docs , set() 根据操作的成功/失败返回 true/false:

Python: cv.SetCaptureProperty(capture, property_id, value) → retval

确保测试这些调用的返回,如果 set() 失败,不要让程序继续执行。

关于python - opencv 的段错误,在 Raspberry 上的 python 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26789504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com