Цифровая электроника для начинающих (Елисеев) - страница 66


4.11. Подключаем веб-камеру

Мы не будем рассматривать подключение к Raspberry Pi всех датчиков, которые рассматривались в главе про Arduino - по сути принцип тот же, и сделать “по аналогии” совсем не сложно. На крайний случай, подключение например, того же DS18S20 к Raspberry Pi можно найти в Гугле за 5 минут. Мы пойдем дальше, и рассмотрим то, что на Arduino или ESP32 сделать нельзя. Например, подключим к Raspberry Pi веб-камеру и посмотрим, что с ней можно сделать. Вычислительная мощность Raspberry Pi весьма неплоха, и позволяет решать интересные задачи, в том числе и по обработке изображений. Тем более, что камера вполне пригодится рассмотренном ранее на радиоуправляемом танке, если мы захотим сделать его на базе Raspberry Pi.


Рекомендуется использовать веб-камеры, которые уже были проверены на совместимость с Raspberry Pi, список таких камер можно найти здесь: https://elinux.org/RPi_USB_Webcams. Я использовал Logitech C920, которая в этом списке как раз есть.


Первым делом необходимо подключить камеру и убедиться, что она видна в системе. Наберем команду lsusb, мы должны увидеть список типа такого.


Если камера видна в системе, можно двигаться дальше. Самый простой способ получить изображение с камеры - установить программу fscam. Наберем команду sudo apt-get install fswebcam.


Получим картинку с камеры: введем команду fswebcam image.jpg. В текущем каталоге будет создано изображение с одноименным названием. В моем случае изображение оказалось пересвеченным, камера не успела настроиться на освещение. Для исправления этого можно добавить параметр задержки: fswebcam --delay=1 image.jpg.


Чтобы узнать список доступных разрешений, можно ввести команду v4l2-ctl --list-formats-ext. Для Logitech C920 максимальное разрешение составляет 1920x1080, что вполне неплохо. С fswebcam почему-то оно не заработало, максимальное разрешение составило 1280х720, что тоже неплохо. Для того чтобы указать разрешение, надо ввести команду: fswebcam -r 1280x720 image.jpg. Несложно сделать и так, чтобы изображения делались постоянно: fswebcam -r 1280x720 --loop 10 image.jpg. С помощью параметра loop задается время в секундах, в нашем примере оно равно 10 - каждые 10 секунд изображение будет перезаписываться на новое.


Несложно записать и видео, для этого нужно поставить программу avconv: sudo apt-get install libav-tools. Теперь можно записать видео, введя команду avconv -f video4linux2 -s 640x480 -i /dev/video0 video0.avi (для примера выбрано разрешение 640х480). Если в системе присутствует несколько камер, вместо