Как уменьшить частоту кадров USB веб-камеры 2.0 с помощью 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 (частота кадров по умолчанию), тогда я получаю правильное видео, но если я изменяю его, я получаю вышеупомянутую ошибку.

Как я могу уменьшить частоту кадров с помощью кода или даже вручную с помощью настроек (если есть способ)

1 ответ

Решение

Хорошо, есть несколько способов сделать это, но я бы посоветовал сначала проверить возможности веб-камеры. Вы можете сделать это, установив:

sudo apt-get install v4l-utils

И запустить:

v4l2-ctl --list-formats-ext

Если желаемая частота кадров не указана, вы можете увеличить значение в cv2.waitKey() и время это с time.time() чтобы получить желаемую частоту кадров.

Другие вопросы по тегам