我有一个很旧的网络摄像头。我一直试图让它工作。我从 guvcview 开始,它可以工作,但是它只给了我捕获的第一帧然后停止。现在没关系。
我正在尝试使用 OpenCV 重新创建这种行为。我在linux上并使用python。据我了解,我最好的选择是让 OpenCV 使用 guvcview 使用的 v4l2。
我的长期想法是只获取第一帧,但在循环中执行此操作以获取“视频”但帧速率较低。
但是,使用下面的非常简单的程序,我收到以下错误:
import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
if frame:
cv2.imshow("frame", frame)
我在循环中执行此代码,直到它向我显示一些东西。我得到的错误:
select timeout
VIDIOC_DQBUF: Resource temporarily unavailable
VIDIOC_QBUF: Invalid argument
有时我会在使用 guvcview 时遇到相同的错误,但只需重新启动程序即可修复它。请注意,当我的程序运行时 guvcview 不起作用(即使没有显示图像)。另请注意,read() 函数需要几秒钟才能返回。