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

问题描述 投票:1回答:1

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

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

python-3.x opencv ubuntu-16.04 frame-rate usb-camera
1个回答
0
投票

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

sudo apt-get install v4l-utils

并运行:

v4l2-ctl --list-formats-ext

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

© www.soinside.com 2019 - 2024. All rights reserved.