TLDR:摄像头停止继续使用返回图像。
我正在使用Raspberry Pi4、Ubuntu、OpenCV运行一个连续的应用程序,在这里,我每5秒捕获一次图像,并将其发送到API。我有一个问题,我得到的None
帧后,一段时间,相机变得没有反应。
我曾尝试在命令行中直接使用V4L2和fswebcam作为测试,但我仍然得到了同样的问题,即相机要么完全没有响应,要么需要几分钟才能捕捉到图像。
简化代码
import cv2
import time
cam=cv2.VideoCapture(0)
time.sleep(2)
cam.set(3,1280)
cam.set(4,720)
cam.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter_fourcc('M','J','P','G'))
while True:
time.sleep(5)
ret , frame = cam.read()
这在一开始运行的很好,但是随着时间的推移,图像的速度越来越慢。最后,它返回None
帧并变得没有响应。随后试图释放和选择相机会导致相机选择超时错误。
VIDEOIO(V4L2:/dev/video0): select() timeout
你知不知道是什么原因导致相机开始用越来越长的时间来捕捉图像,以及为什么相机会变得反应迟钝?
发布于 2022-03-24 20:24:50
您是否尝试过此实现以避免在等待5秒时占用视频拍摄资源?
import cv2
import time
while True:
time.sleep(5)
cam=cv2.VideoCapture(0)
time.sleep(2)
cam.set(3,1280)
cam.set(4,720)
cam.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter_fourcc('M','J','P','G'))
ret , frame = cam.read()
cam.release()
https://stackoverflow.com/questions/71608548
复制相似问题