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

How to decrease frame rate of USB webcam 2.0 using openCV python

我正在 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(默认帧速率),那么我会得到一个正确的视频,但是如果我改变它,我会得到上面提到的错误。

如何通过代码或什至通过设置手动降低帧速率(如果有办法)

好的,您可以通过多种方式执行此操作,但我建议您首先检查网络摄像头的功能。您可以通过安装:

sudo apt-get install v4l-utils

和运行:

v4l2-ctl --list-formats-ext

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