OpenCV в Python не может установить или даже получить значение частоты кадров в коде для веб-камеры - PullRequest
0 голосов
/ 01 марта 2020

Я некоторое время работал над этим кодом, но заметил большую проблему. Когда я заставляю DirectShow быть моим бэкэндом для моей веб-камеры Logitech, частота кадров не может быть ни установлена, ни извлечена.

Я бы хотел в идеале принудительно настроить DirectShow, поскольку я могу настроить масштабирование с помощью его настроек. Моя цель состоит в том, чтобы найти продолжительность, используя ручное количество кадров, которое я кодировал, и настройки частоты кадров OpenCV. Я также хотел бы установить для камеры Logitech C922 максимальную частоту кадров 60 кадров в секунду с использованием OpenCV.

Вот часть моего кода, в которой я пытаюсь настроить параметры своей веб-камеры. При необходимости я могу предоставить больше своего кода:

    vs = cv2.VideoCapture(1 + cv2.CAP_DSHOW)
    vs.set(cv2.CAP_PROP_SETTINGS, 1)
    vs.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
    #TRIED TO SET WEBCAM RESOLUTION ,WIDTH, HEIGHT, AND FRAME RATE TO ADDRESS PROBLEM BUT DID NOT WORK
    vs.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
    vs.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
    vs.set(cv2.CAP_PROP_FPS, 60)
    fps = vs.get(cv2.CAP_PROP_FPS)

Некоторые другие ошибки, с которыми я столкнулся при попытке заставить работать этот код:

  1. Заявка OpenCV что он работает на скорости 60 кадров в секунду, но действительно работает на скорости 30 кадров в секунду.
  2. OpenCV утверждает, что частота кадров равна 0.
  3. Частота кадров значительно замедляется, когда я устанавливаю параметры разрешения ширины и высоты.

Спасибо заранее за помощь!

...