Доступ к камерам UVC через OpenCV, Python и GStreamer в Windows
Общие сведения
Камеры Arducam UVC работают по стандарту UVC, поэтому драйверы не нужны и камеры сразу работают с приложениями для веб-камер. Но опытным пользователям для задач машинного зрения и ИИ может понадобиться собственный код на Python и OpenCV с расширенным управлением камерой. Ниже подробно описано, как открыть камеру Arducam UVC и управлять ею.
Работа в Windows
1. Захват видео с веб-камеры UVC в Windows через Media Foundation
Скачайте SimpleCapture.exe
Скачайте архив SimpleCapture-exe.zip с сайта CodeProject.
Распакуйте архив и запустите SimpleCapture.exe

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

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

Захват видео

2. Доступ к веб-камере UVC через OpenCV
Примеры кода есть на Stack Overflow и GeeksforGeeks.
Как установить 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, читайте в этом документе.
После изменения:
Код на 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: где его скачать и как с ним работать, описано в этом разделе.
Не удаётся открыть камеру
Если у вас та же ошибка, сделайте следующее:
- Смените API (
cv2.CAP_MSMFилиcv2.CAP_DSHOW). - Задайте более высокую частоту кадров.
Частота кадров не задаётся и слишком низкая
С бэкендом cv2.CAP_DSHOW частота кадров может не задаваться и оставаться очень низкой. В этом случае используйте бэкенд cv2.CAP_MSMF.