К содержимому
  1. Главная
  2. Документация
  3. USB-камеры UVC
  4. Доступ к камерам UVC через OpenCV, Python и GStreamer в Windows

Доступ к камерам UVC через OpenCV, Python и GStreamer в Windows

Документация Arducam · перевод arducam-russia.ru

Общие сведения

Камеры Arducam UVC работают по стандарту UVC, поэтому драйверы не нужны и камеры сразу работают с приложениями для веб-камер. Но опытным пользователям для задач машинного зрения и ИИ может понадобиться собственный код на Python и OpenCV с расширенным управлением камерой. Ниже подробно описано, как открыть камеру Arducam UVC и управлять ею.

Работа в Windows

1. Захват видео с веб-камеры UVC в Windows через Media Foundation

Скачайте SimpleCapture.exe

Скачайте архив SimpleCapture-exe.zip с сайта CodeProject.

Распакуйте архив и запустите SimpleCapture.exe

Окно программы SimpleCapture

Выберите File → Choose device → USB → OK.

Выбор USB-камеры в SimpleCapture

Выберите один из вариантов в списке, как на рисунке, и нажмите OK.

Список форматов камеры в SimpleCapture

Захват видео

Захват видео с камеры UVC в SimpleCapture

2. Доступ к веб-камере UVC через OpenCV

Примеры кода есть на Stack Overflow и GeeksforGeeks.

ПримечаниеИспользуйте версию, показанную на рисунке ниже, и обновлённую версию OpenCV: со старыми версиями OpenCV камера может работать неправильно.

Как установить Python и OpenCV

python3 -m pip install opencv-python

Код на Python

import cv2
'''
apiPreference    preferred Capture API backends to use. 
Can be used to enforce a specific reader implementation 
if multiple are available: 
e.g. cv2.CAP_MSMF or cv2.CAP_DSHOW.
'''
# open video0
cap = cv2.VideoCapture(0, cv2.CAP_MSMF)
# set width and height
# cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
# set fps
# cap.set(cv2.CAP_PROP_FPS, 30)
while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    # Display the resulting frame
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

3. Доступ к нескольким веб-камерам UVC

Измените имя устройства и серийный номер

В отличие от Linux, в Windows при работе с несколькими камерами UVC их различают по имени устройства. Как изменить серийный номер камеры Arducam UVC, читайте в этом документе.

ПримечаниеУ разных камер UVC должны быть разные имена устройств и серийные номера.

После изменения:

Код на Python

from pymf import get_MF_devices
device_list = get_MF_devices()
for i, device_name in enumerate(device_list):
    print(f"opencv_index: {i}, device_name: {device_name}")
ПримечаниеНе устанавливайте pymf через pip: пакет pymf в pip — другой, не тот, что скачивается отдельно.

4. Устранение неполадок

Проверьте работу камеры

Прежде чем открывать камеру через OpenCV, проверьте, что она работает, в программе с графическим интерфейсом.

  • Способ 1 — проверьте камеру по инструкции.
  • Способ 2 — проверьте камеру с помощью файла .exe: где его скачать и как с ним работать, описано в этом разделе.

Не удаётся открыть камеру

Если у вас та же ошибка, сделайте следующее:

  1. Смените API (cv2.CAP_MSMF или cv2.CAP_DSHOW).
  2. Задайте более высокую частоту кадров.

Частота кадров не задаётся и слишком низкая

С бэкендом cv2.CAP_DSHOW частота кадров может не задаваться и оставаться очень низкой. В этом случае используйте бэкенд cv2.CAP_MSMF.

Запросить цену

Укажите количество — пришлём коммерческое предложение.