我正在使用 ubuntu 16.04 并使用 USB 2.0网络摄像头。我想 降低帧速率 以某种方式,因为我正在从事的项目需要人脸检测,这确实落后于视频,因此希望降低帧频。
我尝试实现以下代码
import cv2
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FPS, 15)
fps = int(cap.get(5))
print("fps:", fps)
while(cap.isOpened()):
ret,frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
k = cv2.waitKey(1)
if k == 27:
break
我收到以下错误
(python3:24100): GStreamer-CRITICAL **: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed
如果我将上述代码中的帧频设置为30(默认帧频),那么我会得到正确的视频,但是如果更改它,则会出现上述错误。
如何通过代码或什至通过设置手动降低帧速率(如果可以的话)
答案 0 :(得分:0)
好的,有几种方法可以做到这一点,但我建议您先检查一下网络摄像头的功能。您可以通过安装:
sudo apt-get install v4l-utils
然后运行:
v4l2-ctl --list-formats-ext
如果未列出所需的帧速率,则可以增加cv2.waitKey()
中的值,并用time.time()
对其计时,以获得所需的帧速率。