Настройка USB-камеры для проектов OpenCV с Raspberry Pi
В этом руководстве показано, как настроить USB-камеру для ваших проектов OpenCV с Raspberry Pi. OpenCV можно использовать как с камерой Raspberry Pi, так и с обычными USB-камерами (также известными как веб-камеры). Во всех наших проектах OpenCV мы будем использовать USB-камеру.
Необходимые условия
Прежде чем продолжить, убедитесь, что выполнены все следующие условия:
Вам понадобится плата Raspberry Pi и USB-камера.
У вас должна быть установлена Raspberry Pi OS (32-битная или 64-битная) на вашем Raspberry Pi.
Вы должны уметь устанавливать удалённое подключение к рабочему столу Raspberry Pi — нажмите здесь для инструкций на Mac OS.
У вас должен быть установлен OpenCV на Raspberry Pi.
Raspberry Pi с USB-камерой
В наших проектах OpenCV мы будем использовать Raspberry Pi с обычной USB-камерой, как показано на фотографии ниже.
Вот несколько преимуществ и недостатков использования USB-камеры:
Если у вас уже есть USB-камера, вы можете попробовать использовать её в своих проектах OpenCV, и вам не нужно тратить дополнительные деньги на камеру, специально предназначенную для Raspberry Pi.
Если ваше приложение OpenCV требует высококачественного изображения/видео, вы можете купить USB-камеру, которая обеспечивает лучшее качество или другие специфические функции, необходимые для вашего проекта (более высокое качество изображения, более высокая частота кадров и большая гибкость в плане крепления и выбора объектива).
Однако USB-камеры могут быть немного сложнее в настройке, поскольку у них могут возникать проблемы несовместимости драйверов при использовании с Raspberry Pi.
Для проектов Raspberry Pi с использованием OpenCV мы рекомендуем использовать веб-камеру от известного бренда, например Logitech, чтобы избежать проблем с несовместимостью драйверов.
В итоге лучший выбор для вас будет зависеть от требований вашего проекта. В этом руководстве мы покажем, как настроить OpenCV с USB-камерой.
Подключите камеру к USB-порту Raspberry Pi, прежде чем продолжить.
Список USB-устройств
В окне терминала на Raspberry Pi выполните следующую команду, чтобы вывести список всех видеоустройств:
v4l2-ctl --list-devices
В нашем случае мы используем HD Pro Webcam C920 от Logitech, и мы выделили её на скриншоте ниже.
Несмотря на то, что в списке отображаются три видеоустройства, обычно идентификатор 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.
Как работает скрипт
Давайте быстро разберёмся, как работает код. Начните с импорта библиотеки 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.
Устранение неполадок
Настройка USB-камеры может быть немного сложной, поэтому мы составили список из 3 распространённых проблем, с которыми вы можете столкнуться, и способов их решения.
Неправильный идентификатор камеры
Если ваша камера не запускается, возможно, вы используете неправильный идентификатор камеры. Вы можете попробовать второй вариант /dev/video из списка, в нашем случае — 1.
/dev/video1
Затем передайте 1 в качестве идентификатора камеры при инициализации захвата видео и запустите скрипт снова.
video_capture = cv2.VideoCapture(1)
Низкое напряжение
Если вы видите сообщение «Low voltage warning» (Предупреждение о низком напряжении) в правом верхнем углу рабочего стола Raspberry Pi, возможно, вы используете блок питания, который не обеспечивает достаточную мощность для правильной работы USB-камеры. Попробуйте использовать новый блок питания, который может обеспечить достаточную мощность для вашего Raspberry Pi и камеры.
USB-камера несовместима
Как мы уже упоминали ранее, некоторые USB-камеры могут быть несовместимы с Raspberry Pi OS из-за несовместимости драйверов. Именно поэтому мы рекомендуем использовать веб-камеру от известного бренда, например Logitech, чтобы избежать проблем с драйверами.
Заключение
В этом кратком руководстве вы узнали, как настроить USB-камеру для ваших проектов OpenCV с Raspberry Pi. Это будет полезно для будущих проектов OpenCV, таких как распознавание лиц, обнаружение объектов, распознавание жестов и многое другое.
Мы надеемся, что это руководство было для вас полезным. Вы можете ознакомиться со всеми нашими проектами для Raspberry Pi по следующей ссылке: