Используйте MIPI-камеры для передачи изображения и экономии ресурсов своего микрокомпьютера Raspberry Pi.
В отличие от USB-камер, MIPI-камеры (Mobile Industry Processor Interface) подключаются через разъём CSI‑2 (Camera Serial Interface-2) напрямую к видеочипу VideoCore и экономят системные ресурсы Raspberry Pi. При этом USB-порты остаются свободными для другой периферии.
Бывают официальные камеры, разработанные 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) окно с изображением с камеры может не отобразиться.
Подключите камеру через FFC-шлейф к Raspberry Pi в разъём CSI-2
.
Более детальную информацию по подключению вы найдёте в индивидуальной документации вашей модели камеры.
Камера подключена, малинка заработала — осталось запустить программный модуль для захвата изображений.
Raspberry Pi OS поддерживает два глобальных API для работы с камерами:
Legacy Camera
.
Raspberry Pi не может одновременно задействовать оба стека libcamera
и raspicam
. По умолчанию включён libcamera
. Если вы перейдёте на raspicam
, то libcamera
отключится (и наоборот).
Рассмотрим каждый метод подробнее.
Стек libcamera — API через набор утилит libcamera-apps
, среди которых:
libcamera-hello
— для отображения видоискателя;libcamera-still
— для захвата фото;libcamera-vid
— для записи видео;
На основе libcamera
также написан программный модуль Picamera2
для Python.
Более подробно про стек libcamera
для работы с камерой читайте в документации производителя.
Библиотека libcamera
поддерживает все камеры без исключения.
Начиная с Raspberry Pi OS версии Bullsey, программный стек libcamera
включён по умолчанию.
Однако если вы использовали программный стек raspicam
, его необходимо отключить. Для этого следуйте инструкциям ниже.
sudo raspi-config
Рассмотрим примеры работы камеры через встроенные утилиты.
Все команды выполняйте в терминале.
Исполните инструкцию захвата изображения утилитой 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. Для работы со стеком libcamera
в Python предусмотрена библиотека Picamera2
. Примеры можно запускать через встроенный терминал или графическую оболочку Thonny Python IDE.
Более подробно про библиотеку Picamera2
читайте в документации производителя.
Для начала протестируем видоискатель камеры.
# Подключаем необходимые библиотеки 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()
На десять секунд на экране появится изображение с камеры.
Попробуем сделать снимок с камеры и сохранить полученную фотографию.
# Подключаем необходимые библиотеки from picamera2 import Picamera2 from time import sleep # Создаём объект для работы с камерой camera = Picamera2() # Делаем снимок и сохраняем его на рабочий стол в формате png camera.start_and_capture_file('/home/pi/Desktop/image-example.png')
В результате на рабочем столе появится файл фотографии с камеры.
Используйте модуль в режиме видеокамеры — снимите минутный ролик и сохраните его на рабочий стол.
# Подключаем необходимые библиотеки 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
— устаревший API с набором утилит:
raspistill
— для захвата фото;raspivid
— для записи видео.
На основе raspicam
также написан программный модуль PiСamera
для Python. В последнее время библиотеку raspicam
называют Legacy Camera
.
Более подробно про стек raspicam
для работы с камерой читайте в документации производителя.
Библиотека raspicam
поддерживает все камеры, вышедшие до 2022 года включительно.
Более современные камеры, которые вышли в 2023 году и позже, например Raspberry Pi Camera Module 3, raspicam
уже не поддерживает.
Начиная с Raspberry Pi OS версии Bullsey программный стек raspicam
отключён. Для включения следуйте инструкциям ниже.
sudo raspi-config
Рассмотрим примеры работы камеры через встроенные утилиты.
Все команды выполняйте в терминале.
Исполните инструкцию захвата изображения утилитой 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. Для работы со стеком raspicam
в Python предусмотрена библиотека PiСamera
. Примеры можно запускать через встроенный терминал или графическую оболочку Thonny Python IDE.
Более подробно про библиотеку PiCamera
читайте в документации производителя.
Для начала протестируем видоискатель камеры.
# Подключаем необходимые библиотеки from picamera import PiCamera from time import sleep # Создаём объект для работы с камерой camera = PiCamera() # Запускаем предпросмотр сигнала с камеры на экране поверх всех окон camera.start_preview() # Пауза программы на 10 секунд sleep(10) # Выключаем предпросмотр camera.stop_preview()
На десять секунд на экране появится изображение с камеры.
Отлично, модуль камеры исправен и готов к работе.
Попробуйте сделать снимок камеры и сохранить полученную фотографию.
Не уменьшайте время включения модуля ниже двух секунд — камере необходима пауза между включением и выполнением снимка. За это время модуль автоматически скорректирует баланс белого и экспозицию.
# Подключаем необходимые библиотеки 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()
В результате на рабочем столе появится файл фотографии с камеры.
Используйте модуль в режиме видеокамеры — снимите минутный ролик и сохраните его на рабочий стол.
# Подключаем необходимые библиотеки 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()
После минутного ожидания на рабочем столе появится видеофайл с камеры. Для просмотра ролика используйте встроенный плеер.