Веб-камера не читает через OpenCV, но делает с guvcview - PullRequest
2 голосов
/ 17 мая 2019

У меня есть довольно старая веб-камера. Я пытался заставить его работать. Я начал с guvcview, который работает, однако он дает мне только первый захваченный кадр, а затем останавливается. Пока все нормально.

Я пытаюсь воссоздать это поведение, используя OpenCV. Я на Linux и использую Python. Насколько я понимаю, моя лучшая ставка здесь - использовать OpenCV v4l2, который использует guvcview.

Моя долгосрочная идея состоит в том, чтобы получить только первый кадр, но делайте это в цикле, чтобы получить «видео», но с низкой частотой кадров.

Однако, с моей очень простой программой ниже, я получаю следующие ошибки:

import cv2
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
if frame:
    cv2.imshow("frame", frame)

Я выполняю этот код в цикле, пока он мне что-то не покажет. Я получаю ошибки:

select timeout
VIDIOC_DQBUF: Resource temporarily unavailable
VIDIOC_QBUF: Invalid argument

Иногда я получаю те же ошибки с guvcview, но простой перезапуск программы исправит это. Обратите внимание, что guvcview не работает во время работы моей программы (даже если изображение не отображается). Также обратите внимание, что функция read () возвращает несколько секунд.

...