Использование камеры на Raspberry Pi

Использование камерыА теперь настало время поговорить о модуле камеры. Благодаря камере, можно делать снимки, передавать изображение по сети и даже обнаруживать какое-либо движение.

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

Серия статей «Основы Raspberry Pi»

  1. Введение в Raspberry Pi
  2. Установка системы на Raspberry Pi
  3. Программирование на scratch и python
  4. Командная консоль и основы Linux
  5. Контакты GPIO и их программирование
  6. Создание нового пользователя
  7. Конфигурация статического IP
  8. Удаленное подключение к Raspberry Pi
  9. Установка ОС Raspberry Pi Lite и связь через UART
  10. Использование камеры на Raspberry Pi
  11. ШИМ-сигнал в Python

К RPi можно подключить множество различных камер. Мы ориентируемся на использование основной камеры Raspberry, то есть Raspberry Pi Camera HD v2, считающейся самой распространенной.

Сначала несколько слов о технических параметрах камеры:

  • Максимальное разрешение: 8 Мп (3280×2464),
  • Режимы видео: 1080 p30 (Full-HD), 720p60, 640×480 p90 (VGA),
  • Интерфейс : CSI,
  • Вес : 3 г,
  • Размеры: 25 х 24 х 9 мм.

Модуль Raspberry Pi Camera HD использует CSI (последовательный интерфейс камеры). Благодаря этому, весь этот комплект не нагружает шину USB. Кроме того, этот интерфейс совместим с графическим ускорителем (GPU), встроенным в Raspberry Pi.

Подключение камеры

Начнем с подключения камеры, которая ограничивается только вставкой шлейфа:

  • На Raspberry Pi подключите шлейф к разъему CAMERA. Шлейф должен быть направлен ​​серебряными контактами к разъему HDMI.
  • Прикрепите шлейф к камере так, чтобы серебряные контакты были обращены к объективу.

Подключение камеры

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

Как вставить шлейф

Фотографирование

Начнем с основной функции, которая состоит в том, чтобы делать снимки. В первую очередь, как всегда, заходим в меню конфигурации и активируем камеру.

Читать также:  Контакты GPIO и их программирование

Заходим в меню конфигурации

Для захвата фотографий воспользуемся программой Raspistill. Использовать программу для фотографирования довольно легко. Просто введите команду:

raspistill -o test.jpg

Вместо test.jpg можно указать любое имя файла. Фотография будет сделана ровно через 5 секунд после ввода вышеуказанной команды. Файл test.jpg будет сохранен в каталоге, из которого мы запускаем программу Raspistill.

Если у нас подключен монитор или используется VNC для предварительного просмотра изображения, просто найдите фотографию и дважды щелкните по ней, чтобы ее увидеть.

Если фотографии размыты, мы можем изменить фокус, вращая объектив камеры. Операция должна выполняться очень осторожно вручную или с помощью небольшого инструмента. Пожалуйста, будьте осторожны при настройке, так как линзу можно легко повредить, а точнее поцарапать!

Как изменить фокус камеры на распберри

Команды

Вот некоторые полезные команды, которые стоит знать:

Отключить предварительный просмотр. Отключите предварительный просмотр, добавив параметр -n :

raspistill -n -o test.jpg

Изменить время захвата. Время можно изменить с помощью параметра -t, за которым следует время в миллисекундах :

raspistill -n -o test.jpg -t 100

Примечание: во избежание проблем с качеством и прочего рекомендуется использовать не менее 100 мс.

Поворот изображения. Просто используйте параметр -rot , который поворачивает изображение на выбранный угол, который будет кратен 90°:

raspistill -n -o test.jpg -t 100 -rot 180

Вертикальное или горизонтальное отражение. У нас есть команды для отражения по горизонтали (-hf) и по вертикали (-vf):

raspistill -n -o test.jpg -t 100 -hf

raspistill -n -o test.jpg -t 100 -vf

Изменить разрешение. Нам не всегда требуется самое высокое разрешение, мы можем сэкономить много места, уменьшив размер загружаемого изображения. Установить ширину можно с помощью опции -w и высоту с помощью -h . Стандартная фотография разрешения VGA будет:

raspistill -n -o test_VGA.jpg -t 100 -w 640 -h 480

Добавить дату и время в файл. Программа Raspistill может запускаться автоматически, например, периодически или при обнаружении определенного события. В этом случае было бы удобно иметь возможность сохранять несколько файлов вместо того, чтобы каждый раз перезаписывать один и тот же файл test.jpg. Программа Raspistill имеет два варианта использования текущего времени в имени файла.

Читать также:  Установка системы на Raspberry Pi

Опция -dt добавляет текущую дату и время к имени файла. В то время как параметр -ts добавляет так называемую метку времени, которая представляет собой количество секунд (это традиционный метод Unix для представления времени). Чтобы использовать эти возможности, в имени файла мы должны вставить маркер %d, который будет заменен на дату, когда была сделана фотография.

Мы можем выполнить следующие две команды для тестирования, например, даты 20.10.2020:

raspistill -n -o test_%d.jpg -t 100 -dt # Сохраним как test_10202041040.jpg

raspistill -n -o test_%d.jpg -t 100 -ts # Сохраним как test_1603196029.jpg

Другие настройки. Есть еще много команд. Наиболее важную информацию можно найти в описании, которое появляется после вызова команды raspistill без дополнительных параметров, тогда вся информация и команды появятся в виде списка. С описанными там атрибутами вы также можете изменять такие параметры, как ISO, баланс белого, яркость и контрастность.

Передача изображений в движении

Еще одно не менее интересное приложение для камеры Raspberry Pi — Motion, позволяющее в том числе передавать изображение по сети. Кроме того, его также можно использовать для отслеживания движения объектов.

Начнем с установки программы, введя команду:

sudo apt install motion

Установленная версия пакета Motion по умолчанию не имеет встроенной поддержки нашей камеры, поэтому нам необходимо установить соответствующий драйвер: Video4Linux (V4L). Для этого вводим следующую команду, отмечая, что предпоследний символ — это строчная буква «L», а не цифра «1»:

sudo modprobe bcm2835-v4l2

Теперь в каталоге /dev появится новое устройство, которое будет соответствовать веб-камере: /dev/video0.

Читать также:  Введение в Raspberry Pi

Это стандартный интерфейс, используемый камерами в Linux.

Установленный пакет Motion имеет большие возможности и множество доступных опций. Файл конфигурации по умолчанию — /etc/motion/motion.conf. Доступ к каталогу /etc требует прав администратора, поэтому отредактируйте файл командой:

sudo nano /etc/motion/motion.conf

После запуска файла нам нужно внести некоторые важные изменения. Сначала ищем строку, где стоит опция stream_localhost. По умолчанию включено (on), меняем на off (выключено).

Вы можете использовать сочетание клавиш CTRL + W для поиска текста в nano.

Опция stream_localhost

Сохраняем файл и выходим. Затем запускаем пакет Motion командой:

sudo motion

При запуске программы, мы запускаем веб-браузер на нашем ПК. В адресной строке введите IP-адрес с портом 8081 (например, http://192.168.0.250:8081/). Через некоторое время мы должны увидеть небольшой поток передачи с нашей веб-камеры (1 FPS).

Нажмите CTRL + C, чтобы завершить консольную программу.

Чтобы увеличить FPS (кадры в секунду), нужно изменить следующие строки, которые по умолчанию установлены на 20:

Частота кадров

stream_maxrate: максимальная скорость кадров в потоке.

stream_maxrate

Увеличиваем разрешение:

  • width: ширину мы устанавливаем на 640,
  • high: высоту мы устанавливаем на 480.

Увеличиваем разрешение

Обнаружение движения на Raspberry Pi

Как вы можете видеть, мы превратили Raspberry Pi в веб-камеру. Стоит помнить, что пакет Motion намного превосходит возможности обычных камер. Он позволяет обнаруживать движение, автоматически снимать фото или видео, уведомлять о событиях и т. д.

Более подробную информацию о программе вы можете найти на сайте проекта: https://motion-project.github.io/

Чтобы протестировать камеру, можно запустить, например, опцию, отвечающую за отслеживание движения. Для этого достаточно включить опцию в конфигурационном файле, которая называется locate_motion_mode (меняем с off на on). Движущиеся элементы теперь будут отмечены прямоугольником на потоковом изображении. Чтобы элемент обводился красным прямоугольником, locate_motion_style также нужно изменить на redbox.

В следующей статье поговорим о ШИМ-сигнале в Python, и вообще, как с ним работать.

С Уважением, МониторБанк

Добавить комментарий