【发布时间】:2015-01-03 13:14:38
【问题描述】:
我正在制作一个非常简单的程序,它使用 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()
我得到了错误
分段错误
我发现如果我运行相同的代码,但不尝试调整分辨率(因此在第 7-8 行没有 cap.set() 命令),一切正常。所以它应该与此相关。 我已经看过其他关于类似错误的帖子,所有这些似乎都是出于其他原因。 有人知道原因可能是什么吗?
【问题讨论】:
-
您有连接到 RPi 的显示器吗?你是如何访问它的?
-
我实际上是在 ssh 通道中显示输出。我在我的电脑上安装了 Xming,并自动启动显示输出的窗口会话。正如我所写,我已经用另一个版本的 opencv 完成了所有这些,在这种情况下一切正常。
-
我忘了说这个程序会显示视频的前 4 帧。我将 cv2.waitkey() 的参数从 1 更改为 0,并按下按钮“q”控制帧的更改(如您在代码中所见)。它向我显示了前四帧,然后出现错误! ...这真的很奇怪。
-
分别使用
cap.get和cap.grab(而不是组合的cap.read)并检查cap.get是否失败?!?
标签: python opencv segmentation-fault raspberry-pi raspbian