Я некоторое время работал над этим кодом, но заметил большую проблему. Когда я заставляю 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)
Некоторые другие ошибки, с которыми я столкнулся при попытке заставить работать этот код:
- Заявка OpenCV что он работает на скорости 60 кадров в секунду, но действительно работает на скорости 30 кадров в секунду.
- OpenCV утверждает, что частота кадров равна 0.
- Частота кадров значительно замедляется, когда я устанавливаю параметры разрешения ширины и высоты.
Спасибо заранее за помощь!