Содержание

Как подключить и настроить модуль камеры для Raspberry Pi

Используйте MIPI-камеры для передачи изображения и экономии ресурсов своего микрокомпьютера Raspberry Pi.

В отличие от USB-камер, MIPI-камеры (Mobile Industry Processor Interface) подключаются через разъём CSI‑2 (Camera Serial Interface-2) напрямую к видеочипу VideoCore и экономят системные ресурсы Raspberry Pi. При этом USB-порты остаются свободными для другой периферии.

Модели камер для Raspberry Pi

Бывают официальные камеры, разработанные Rasperry Pi Foundation, но есть и множество камер сторонних производителей, например Waveshare и т. д.

Официальные камеры

Модель Датчик изображения Раз-решение Захват фото Запись видео Угол обзора ИК-фильтр
Camera Module OmniVision OV5647 5 Мп 2592×1944 1080p30 720p60 640x480p90 67° Да
Camera Module v2Документация Sony IMX219 8 Мп 3280×2464 1080p30 720p60 640x480p90 79° Да
Camera Module v2 NoIRДокументация Sony IMX219 8 Мп 3280×2464 1080p30 720p60 640x480p90 79° Нет
Camera Module v3Документация Sony IMX708 11,9 Мп 4608x2592 1080p50 720p100 480p120 75° Да
High Quality CameraДокументация Sony IMX477 12,3 Мп 4056x3040 1080p30 720p60 640x480p90 Зависит от объектива Да

Сторонние камеры

Модель Датчик изображения Раз-решение Захват фото Запись видео Угол обзора ИК-фильтр
Camera (Model D)Документация OmniVision OV5647 5 Мп 2592×1944 1080p30 720p60 640x480p90 66° Да
Camera (Model M)Документация OmniVision OV5647 5 Мп 2592×1944 1080p30 720p60 640x480p90 200° Да
Camera (Model FPC)Документация OmniVision OV5647 5 Мп 2592×1944 1080p30 720p60 640x480p90 72° Да
Camera (Model IR‑CUT B)Документация OmniVision OV5647 5 Мп 2592×1944 1080p30 720p60 640x480p90 40° Да / Нет
Camera (Model Zero)Документация OmniVision OV5647 5 Мп 2592×1944 1080p30 720p60 640x480p90 69° Да

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

Расcмотрим подключение на примере Camera Module 3 и платы Raspberry Pi 4 Model B.

С остальными MIPI-камерами и версиями одноплатных компьютеров Raspberry Pi всё будет аналогично.

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

При работе с камерой подключайте дисплей по HDMI. При соединении через виртуальный рабочий стол (VNC) окно с изображением с камеры может не отобразиться.

Что понадобится

Последовательность действий

Шаг 1

Подключите камеру через FFC-шлейф к Raspberry Pi в разъём CSI-2.

Более детальную информацию по подключению вы найдёте в индивидуальной документации вашей модели камеры.

Шаг 2

Заведите Raspberry Pi по HDMI.

Шаг 3

Камера подключена, малинка заработала — осталось запустить программный модуль для захвата изображений.

Raspberry Pi OS поддерживает два глобальных API для работы с камерами:

Raspberry Pi не может одновременно задействовать оба стека libcamera и raspicam. По умолчанию включён libcamera. Если вы перейдёте на raspicam, то libcamera отключится (и наоборот).

Рассмотрим каждый метод подробнее.

Библиотека libcamera

Стек libcamera — API через набор утилит libcamera-apps, среди которых:

На основе libcamera также написан программный модуль Picamera2 для Python.

Более подробно про стек libcamera для работы с камерой читайте в документации производителя.

Поддерживаемые камеры

Библиотека libcamera поддерживает все камеры без исключения.

Включение стека

Начиная с Raspberry Pi OS версии Bullsey, программный стек libcamera включён по умолчанию. Однако если вы использовали программный стек raspicam, его необходимо отключить. Для этого следуйте инструкциям ниже.

  1. Откройте терминал на Raspberry Pi.
  2. Зайдите в настройки Raspberry Pi.
    sudo raspi-config

  3. Выберите пункт: Interface Options Legacy Camera.
  4. Выберите No для подтверждения отключения поддержки Legacy Camera.
  5. Перезагрузите Raspberry Pi.

Примеры работы через утилиты

Рассмотрим примеры работы камеры через встроенные утилиты.

Все команды выполняйте в терминале.

Тест камеры

Исполните инструкцию захвата изображения утилитой libcamera-hello.

libcamera-hello -t 10000

На десять секунд на экране появится трансляция с камеры.

Отлично, модуль камеры исправен и готов к работе.

Захват фото

Попробуем сделать снимок с камеры и сохранить полученную фотографию.

Не уменьшайте время включения модуля ниже двух секунд — камере необходима пауза между включением и выполнением снимка. За это время модуль автоматически скорректирует баланс белого и экспозицию.

Выполните команду захвата изображения с помощью утилиты libcamera-still с сохранением в файл на рабочем столе с именем image-example.png.

libcamera-still -t 2000 -o /home/pi/Desktop/image-example.png

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

Запись видео

Используйте модуль в режиме видеокамеры — снимите минутный ролик с помощью утилиты libcamera-vid и сохраните его на рабочем столе с именем video-example.h264.

libcamera-vid -t 60000 -o /home/pi/Desktop/video-example.h264

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

Примеры работы через Python

Перейдём к экспериментам с камерой через интегрированную среду разработки Python. Для работы со стеком libcamera в Python предусмотрена библиотека Picamera2. Примеры можно запускать через встроенный терминал или графическую оболочку Thonny Python IDE.

Более подробно про библиотеку Picamera2 читайте в документации производителя.

Тест камеры

Для начала протестируем видоискатель камеры.

camera-libcamera-preview.py
# Подключаем необходимые библиотеки
from picamera2 import Picamera2, Preview
from time import sleep
 
# Создаём объект для работы с камерой
camera = Picamera2()
 
# Настраиваем окно предпросмотра
preview_config = camera.create_preview_configuration()
camera.configure(preview_config)
 
# Запускаем окно предпросмотра сигнала с камеры на экране поверх всех окон
camera.start_preview(Preview.QTGL)
 
# Включаем камеру
camera.start()
 
# Ставим паузу на 10 секунд
sleep(10)
 
# Выключаем камеру
camera.stop()
 
# Выключаем окно предпросмотра
camera.stop_preview()

На десять секунд на экране появится изображение с камеры.

Захват фото

Попробуем сделать снимок с камеры и сохранить полученную фотографию.

camera-libcamera-save-image.py
# Подключаем необходимые библиотеки
from picamera2 import Picamera2
from time import sleep
 
# Создаём объект для работы с камерой
camera = Picamera2()
 
# Делаем снимок и сохраняем его на рабочий стол в формате png
camera.start_and_capture_file('/home/pi/Desktop/image-example.png')

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

Запись видео

Используйте модуль в режиме видеокамеры — снимите минутный ролик и сохраните его на рабочий стол.

camera-libcamera-save-video.py
# Подключаем необходимые библиотеки
from picamera2 import Picamera2
from time import sleep
 
# Создаём объект для работы с камерой
camera = Picamera2()
 
# Пишем потоковое видео в течение одной минуты
# и сохраняем его на рабочий стол в формате h264
camera.start_and_record_video('/home/pi/Desktop/video-example.h264',
                              duration=60, show_preview=True )

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

Библиотека raspicam

Стек raspicam — устаревший API с набором утилит:

На основе raspicam также написан программный модуль PiСamera для Python. В последнее время библиотеку raspicam называют Legacy Camera.

Более подробно про стек raspicam для работы с камерой читайте в документации производителя.

Поддерживаемые камеры

Библиотека raspicam поддерживает все камеры, вышедшие до 2022 года включительно.

Более современные камеры, которые вышли в 2023 году и позже, например Raspberry Pi Camera Module 3, raspicam уже не поддерживает.

Включение стека

Начиная с Raspberry Pi OS версии Bullsey программный стек raspicam отключён. Для включения следуйте инструкциям ниже.

  1. Откройте терминал на Raspberry Pi.
  2. Зайдите в настройки Raspberry Pi.
    sudo raspi-config

  3. Выберите пункт: Interface Options Legacy Camera.
  4. Выберите Yes для подтверждения включения поддержки Legacy Camera.
  5. Перезагрузите Raspberry Pi.

Примеры работы через утилиты

Рассмотрим примеры работы камеры через встроенные утилиты.

Все команды выполняйте в терминале.

Тест камеры

Исполните инструкцию захвата изображения утилитой raspistill.

raspistill -t 10000

На десять секунд на экране появится трансляция с камеры.

Отлично, модуль камеры исправен и готов к работе.

Захват фото

Попробуем сделать снимок камеры и сохранить полученную фотографию.

Не уменьшайте время включения модуля ниже двух секунд — камере необходима пауза между включением и выполнением снимка. За это время модуль автоматически скорректирует баланс белого и экспозицию.

Выполните команду захвата изображения с помощью утилиты raspistill с сохранением в файл на рабочем столе с именем image-example.png.

raspistill -t 2000 -o /home/pi/Desktop/image-example.png

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

Запись видео

Используйте модуль в режиме видеокамеры — снимите минутный ролик с помощью утилиты raspivid и сохраните его на рабочем столе с именем video-example.h264.

raspivid -t 60000 -o /home/pi/Desktop/video-example.h264

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

Примеры работы через Python

Перейдём к экспериментам с камерой через интегрированную среду разработки Python. Для работы со стеком raspicam в Python предусмотрена библиотека PiСamera. Примеры можно запускать через встроенный терминал или графическую оболочку Thonny Python IDE.

Более подробно про библиотеку PiCamera читайте в документации производителя.

Тест камеры

Для начала протестируем видоискатель камеры.

camera-raspicam-preview.py
# Подключаем необходимые библиотеки
from picamera import PiCamera
from time import sleep
 
# Создаём объект для работы с камерой
camera = PiCamera()
 
# Запускаем предпросмотр сигнала с камеры на экране поверх всех окон
camera.start_preview()
 
# Пауза программы на 10 секунд
sleep(10)
 
# Выключаем предпросмотр
camera.stop_preview()

На десять секунд на экране появится изображение с камеры.

Отлично, модуль камеры исправен и готов к работе.

Захват фото

Попробуйте сделать снимок камеры и сохранить полученную фотографию.

Не уменьшайте время включения модуля ниже двух секунд — камере необходима пауза между включением и выполнением снимка. За это время модуль автоматически скорректирует баланс белого и экспозицию.

camera-raspicam-save-image.py
# Подключаем необходимые библиотеки
from picamera import PiCamera
from time import sleep
 
# Создаём объект для работы с камерой
camera = PiCamera()
 
# Запускаем предпросмотр сигнала с камеры на экране поверх всех окон
camera.start_preview()
 
# Даём камере три секунды на автофокусировку и установку баланса белого
sleep(3)
 
# Делаем снимок и сохраняем его на рабочий стол в формате png
camera.capture('/home/pi/Desktop/image-example.png')
 
# Выключаем режим предпросмотра
camera.stop_preview()

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

Запись видео

Используйте модуль в режиме видеокамеры — снимите минутный ролик и сохраните его на рабочий стол.

camera-raspicam-save-video.py
# Подключаем необходимые библиотеки
from picamera import PiCamera
from time import sleep
 
camera = PiCamera()
 
# Запускаем предпросмотр сигнала с камеры на экране поверх всех окон
camera.start_preview()
 
# Начинаем запись видеофайла
camera.start_recording('/home/pi/Desktop/video-example.h264')
 
# Минуту пишем потоковое видео
camera.wait_recording(60)
 
# Останавливаем запись
camera.stop_recording()
 
# Выключаем предпросмотр
camera.stop_preview()

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

Ресурсы

Магазин

Статьи