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