Настройка USB-камеры для проектов OpenCV с Raspberry Pi

В этом руководстве показано, как настроить USB-камеру для ваших проектов OpenCV с Raspberry Pi. OpenCV можно использовать как с камерой Raspberry Pi, так и с обычными USB-камерами (также известными как веб-камеры). Во всех наших проектах OpenCV мы будем использовать USB-камеру.

Raspberry Pi — настройка USB-камеры для проектов OpenCV

Необходимые условия

Прежде чем продолжить, убедитесь, что выполнены все следующие условия:

Raspberry Pi с USB-камерой

В наших проектах OpenCV мы будем использовать Raspberry Pi с обычной USB-камерой, как показано на фотографии ниже.

USB-камера (веб-камера), совместимая с Raspberry Pi

Вот несколько преимуществ и недостатков использования USB-камеры:

  • Если у вас уже есть USB-камера, вы можете попробовать использовать её в своих проектах OpenCV, и вам не нужно тратить дополнительные деньги на камеру, специально предназначенную для Raspberry Pi.

  • Если ваше приложение OpenCV требует высококачественного изображения/видео, вы можете купить USB-камеру, которая обеспечивает лучшее качество или другие специфические функции, необходимые для вашего проекта (более высокое качество изображения, более высокая частота кадров и большая гибкость в плане крепления и выбора объектива).

  • Однако USB-камеры могут быть немного сложнее в настройке, поскольку у них могут возникать проблемы несовместимости драйверов при использовании с Raspberry Pi.

  • Для проектов Raspberry Pi с использованием OpenCV мы рекомендуем использовать веб-камеру от известного бренда, например Logitech, чтобы избежать проблем с несовместимостью драйверов.

В итоге лучший выбор для вас будет зависеть от требований вашего проекта. В этом руководстве мы покажем, как настроить OpenCV с USB-камерой.

Подключите камеру к USB-порту Raspberry Pi, прежде чем продолжить.

USB-камера подключена к Raspberry Pi

Список USB-устройств

В окне терминала на Raspberry Pi выполните следующую команду, чтобы вывести список всех видеоустройств:

v4l2-ctl --list-devices

В нашем случае мы используем HD Pro Webcam C920 от Logitech, и мы выделили её на скриншоте ниже.

Raspberry Pi — список всех USB-устройств для поиска идентификатора веб-камеры

Несмотря на то, что в списке отображаются три видеоустройства, обычно идентификатор USB-камеры — это тот, что в первой строке. В нашем случае:

/dev/video0

Это означает, что для наших проектов OpenCV идентификатор камеры равен 0; ваш может отличаться.

Тестирование USB-камеры с OpenCV — Python-скрипт

Мы создали простой Python-скрипт OpenCV для проверки совместимости вашей USB-камеры с Raspberry Pi и возможности её использования в будущих проектах.

Начните с создания нового файла с именем opencv_test_usb_camera.py, выполните следующую команду:

nano opencv_test_usb_camera.py

Скопируйте код в только что созданный файл:

# Rui Santos & Sara Santos - Random Nerd Tutorials
# Complete project details at https://RandomNerdTutorials.com/set-up-usb-camera-opencv-raspberry-pi/

import cv2

video_capture = cv2.VideoCapture(0)

while True:
    result, video_frame = video_capture.read()  # read frames from the video
    if result is False:
        break  # terminate the loop if the frame is not read successfully

    cv2.imshow(
        "USB Camera Test", video_frame
    )

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

video_capture.release()
cv2.destroyAllWindows()

Просмотреть исходный код

Вам нужно изменить идентификатор VideoCapture(id) на тот, который вы нашли в предыдущем разделе. В нашем случае идентификатор камеры равен 0, и это выглядит следующим образом:

video_capture = cv2.VideoCapture(0)

После внесения всех изменений нажмите Ctrl + X, чтобы сохранить файл, введите Y и Enter.

Raspberry Pi OpenCV Python-скрипт — редактирование идентификатора устройства захвата

Как работает скрипт

Давайте быстро разберёмся, как работает код. Начните с импорта библиотеки OpenCV.

import cv2

Создайте объект cv2.VideoCapture(0) с идентификатором вашей USB-камеры под названием video_capture.

video_capture = cv2.VideoCapture(0)

Создайте цикл, который постоянно захватывает новые кадры с USB-камеры и отображает их в окне предварительного просмотра. Вы также можете остановить скрипт в любой момент, нажав клавишу q на клавиатуре.

while True:
    result, video_frame = video_capture.read()  # read frames from the video
    if result is False:
        break  # terminate the loop if the frame is not read successfully

    cv2.imshow(
        "USB Camera Test", video_frame
    )

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

Когда вы остановите Python-скрипт, он остановит USB-камеру и закроет все окна предварительного просмотра.

video_capture.release()
cv2.destroyAllWindows()

С активированным виртуальным окружением Python для OpenCV, в нашем случае:

source projectsenv/bin/activate

Запустите скрипт, выполнив следующую команду:

python opencv_test_usb_camera.py
Raspberry Pi OpenCV — запуск тестового Python-скрипта для USB-камеры

Откроется окно предварительного просмотра, и веб-камера начнёт потоковую передачу видео на рабочий стол Raspberry Pi.

Raspberry Pi OpenCV — тестирование USB-камеры (веб-камеры)

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

Настройка USB-камеры может быть немного сложной, поэтому мы составили список из 3 распространённых проблем, с которыми вы можете столкнуться, и способов их решения.

Неправильный идентификатор камеры

Если ваша камера не запускается, возможно, вы используете неправильный идентификатор камеры. Вы можете попробовать второй вариант /dev/video из списка, в нашем случае — 1.

/dev/video1
Raspberry Pi — список всех USB-устройств, попробуйте другой идентификатор для веб-камеры

Затем передайте 1 в качестве идентификатора камеры при инициализации захвата видео и запустите скрипт снова.

video_capture = cv2.VideoCapture(1)

Низкое напряжение

Если вы видите сообщение «Low voltage warning» (Предупреждение о низком напряжении) в правом верхнем углу рабочего стола Raspberry Pi, возможно, вы используете блок питания, который не обеспечивает достаточную мощность для правильной работы USB-камеры. Попробуйте использовать новый блок питания, который может обеспечить достаточную мощность для вашего Raspberry Pi и камеры.

Raspberry Pi — предупреждение о низком напряжении, проверьте блок питания

USB-камера несовместима

Как мы уже упоминали ранее, некоторые USB-камеры могут быть несовместимы с Raspberry Pi OS из-за несовместимости драйверов. Именно поэтому мы рекомендуем использовать веб-камеру от известного бренда, например Logitech, чтобы избежать проблем с драйверами.

Заключение

В этом кратком руководстве вы узнали, как настроить USB-камеру для ваших проектов OpenCV с Raspberry Pi. Это будет полезно для будущих проектов OpenCV, таких как распознавание лиц, обнаружение объектов, распознавание жестов и многое другое.

Мы надеемся, что это руководство было для вас полезным. Вы можете ознакомиться со всеми нашими проектами для Raspberry Pi по следующей ссылке: