Как уменьшить частоту кадров USB веб-камеры 2.0 с помощью OpenCV Python - PullRequest
1 голос
/ 09 апреля 2019

Я работаю на 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 Ответ

0 голосов
/ 09 апреля 2019

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

sudo apt-get install v4l-utils

и запустить:

v4l2-ctl --list-formats-ext

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

...