如何使用openCV Python降低USB网络摄像头2.0的帧率

3
我正在使用一台运行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(默认帧速率),那么我会得到一个正常的视频,但是如果我更改它,我就会遇到上述错误。
我应该如何通过代码或者手动设置来降低帧速率呢?
1个回答

1

好的,有几种方法可以做到这一点,但我建议首先检查网络摄像头的功能。您可以通过安装来实现这一点:

sudo apt-get install v4l-utils

并运行:

v4l2-ctl --list-formats-ext

如果所需帧率未列出,您可以增加 cv2.waitKey() 中的值,并使用 time.time() 计时,以获得所需的帧率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接