====== Как подключить и настроить модуль камеры для Raspberry Pi ======
Используйте [[amp>collection/cameras?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|MIPI-камеры]] для передачи изображения и экономии ресурсов своего микрокомпьютера [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Raspberry Pi]].
В отличие от USB-камер, MIPI-камеры (Mobile Industry Processor Interface) подключаются через разъём CSI‑2 (Camera Serial Interface-2) напрямую к видеочипу VideoCore и экономят системные ресурсы Raspberry Pi. При этом USB-порты остаются свободными для другой периферии.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-overview.jpg?nolink |}}
===== Модели камер для Raspberry Pi =====
Бывают [[#официальные_камеры|официальные камеры]], разработанные Rasperry Pi Foundation, но есть и множество камер [[#сторонние_камеры|сторонних производителей]], например Waveshare и т. д.
==== Официальные камеры ====
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-official.jpg?nolink |}}
^ Модель ^ Датчик изображения ^ Раз-решение ^ Захват фото ^ Запись видео ^ Угол обзора ^ ИК-фильтр ^
| [[amp>product/raspberry-pi-camera-board?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera Module]] | OmniVision OV5647 | 5 Мп | 2592×1944 | 1080p30 720p60 640x480p90 | 67° | Да |
| [[amp>product/raspberry-pi-camera-board-v2?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera Module v2]] / [[:rpi:camera|Документация]] | Sony IMX219 | 8 Мп | 3280×2464 |1080p30 720p60 640x480p90 | 79° | Да |
| [[amp>product/raspberry-pi-no-ir-camera-board?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera Module v2 NoIR]] / [[:rpi:noir-camera|Документация]] | Sony IMX219 | 8 Мп | 3280×2464 | 1080p30 720p60 640x480p90 | 79° | Нет |
| [[amp>product/raspberry-pi-camera-module-3?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera Module v3]] / [[:products:raspberry-pi-camera-module-3|Документация]] | Sony IMX708 | 11,9 Мп | 4608x2592 | 1080p50 720p100 480p120 | 75° | Да |
| [[amp>product/raspberry-pi-high-quality-camera?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|High Quality Camera]] / [[:products:raspberry-pi-high-quality-camera|Документация]] | Sony IMX477 | 12,3 Мп | 4056x3040 | 1080p30 720p60 640x480p90 | Зависит от объектива | Да |
==== Сторонние камеры ====
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-non-official.jpg?nolink |}}
^ Модель ^ Датчик изображения ^ Раз-решение ^ Захват фото ^ Запись видео ^ Угол обзора ^ ИК-фильтр ^
| [[amp>product/camera-raspberry-pi-model-d?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera (Model D)]] / [[:products:camera-raspberry-pi-model-d|Документация]]| OmniVision OV5647 | 5 Мп | 2592×1944 | 1080p30 720p60 640x480p90 | 66° | Да |
| [[amp>product/camera-raspberry-pi-model-m?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera (Model M)]] / [[:products:camera-raspberry-pi-model-m|Документация]]| OmniVision OV5647 | 5 Мп | 2592×1944 | 1080p30 720p60 640x480p90 | 200° | Да |
| [[amp>product/camera-raspberry-pi-model-fpc?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera (Model FPC)]] / [[:products:camera-raspberry-pi-model-fpc|Документация]]| OmniVision OV5647 | 5 Мп | 2592×1944 | 1080p30 720p60 640x480p90 | 72° | Да |
| [[amp>product/camera-raspberry-pi-model-ir-cut-b?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera (Model IR‑CUT B)]] / [[:products:camera-raspberry-pi-model-ir-cut-b|Документация]]| OmniVision OV5647 | 5 Мп | 2592×1944 | 1080p30 720p60 640x480p90 | 40° | Да / Нет |
| [[amp>product/camera-raspberry-pi-model-zero?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera (Model Zero)]] / [[:products:camera-raspberry-pi-model-zero|Документация]]| OmniVision OV5647 | 5 Мп | 2592×1944 | 1080p30 720p60 640x480p90 | 69° | Да |
===== Подключение камеры =====
Расcмотрим подключение на примере [[amp>product/raspberry-pi-camera-module-3?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Camera Module 3]] и платы [[amp>product/raspberry-pi-4-model-b-4-gb?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Raspberry Pi 4 Model B]].
С остальными [[amp>collection/cameras?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|MIPI-камерами]] и версиями одноплатных компьютеров [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Raspberry Pi]] всё будет аналогично.
MIPI-камеры чувствительны к статическому электричеству. Перед работой с модулем устраните свой заряд: прикоснитесь, например, к домашней водопроводной трубе или батарее, или же воспользуйтесь [[amp>product/antistatic-wrist-strap?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|антистатическим браслетом]].
При работе с камерой подключайте дисплей по HDMI. При соединении через виртуальный рабочий стол (VNC) окно с изображением с камеры может не отобразиться.
==== Что понадобится ====
* [[amp>product/raspberry-pi-camera-module-3?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Raspberry Pi Camera Module 3]]
* [[amp>product/raspberry-pi-camera-module-3?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Raspberry Pi 4 (4 ГБ)]]
* Комплектующие из статьи [[articles:rpi-guide|«Заводим Raspberry Pi»]]
==== Последовательность действий ====
=== Шаг 1 ===
Подключите камеру через FFC-шлейф к Raspberry Pi в разъём ''CSI-2''.{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-setup.1.png?nolink |}}
Более детальную информацию по подключению вы найдёте в индивидуальной документации [[#модели_камер_для_raspberry_pi|вашей модели камеры]].
=== Шаг 2 ===
[[articles:rpi-guide|Заведите Raspberry Pi по HDMI.]]
=== Шаг 3 ===
Камера подключена, малинка заработала — осталось запустить программный модуль для захвата изображений.
Raspberry Pi OS поддерживает два глобальных API для работы с камерами:
* [[#стек_libcamera|libcamera]] — современный стек библиотек, который активно развивается.
* [[#стек_raspicam|raspicam]] — устаревший стек библиотек, который потихоньку угасает. В последнее время получил название ''Legacy Camera''.
Raspberry Pi не может одновременно задействовать оба стека ''libcamera'' и ''raspicam''. По умолчанию включён ''libcamera''. Если вы перейдёте на ''raspicam'', то ''libcamera'' отключится (и наоборот).
Рассмотрим каждый метод подробнее.
===== Библиотека libcamera =====
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-libcamera.png?nolink&500 |}}
Стек libcamera — API через набор утилит ''libcamera-apps'', среди которых:
* ''libcamera-hello'' — для отображения видоискателя;
* ''libcamera-still'' — для захвата фото;
* ''libcamera-vid'' — для записи видео;
* и другие модули.
На основе ''libcamera'' также написан программный модуль ''Picamera2'' для Python.
Более подробно про стек ''libcamera'' для работы с камерой читайте в [[https://www.raspberrypi.com/documentation/computers/camera_software.html#libcamera-and-libcamera-apps|документации производителя]].
==== Поддерживаемые камеры ====
Библиотека ''libcamera'' поддерживает все камеры без исключения.
==== Включение стека ====
Начиная с Raspberry Pi OS версии Bullsey, программный стек ''libcamera'' включён по умолчанию.
Однако если вы использовали программный стек ''raspicam'', его необходимо отключить. Для этого следуйте инструкциям ниже.
- Откройте терминал на Raspberry Pi.{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-libcamera-enable.1.png?nolink |}}
- Зайдите в настройки Raspberry Pi.sudo raspi-config
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-libcamera-enable.2.png?nolink |}}
- Выберите пункт:
Interface Options
Legacy Camera.{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-libcamera-enable.3.gif?nolink |}}
- Выберите No для подтверждения отключения поддержки Legacy Camera.{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-libcamera-enable.4.png?nolink |}}
- Перезагрузите Raspberry Pi.
==== Примеры работы через утилиты ====
Рассмотрим примеры работы камеры через встроенные утилиты.
Все команды выполняйте в терминале.
=== Тест камеры ===
Исполните инструкцию захвата изображения утилитой ''libcamera-hello''.
libcamera-hello -t 10000
На десять секунд на экране появится трансляция с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-libcamera-utils.1.jpg?nolink |}}
Отлично, модуль камеры исправен и готов к работе.
=== Захват фото ===
Попробуем сделать снимок с камеры и сохранить полученную фотографию.
Не уменьшайте время включения модуля ниже двух секунд — камере необходима пауза между включением и выполнением снимка. За это время модуль автоматически скорректирует баланс белого и экспозицию.
Выполните команду захвата изображения с помощью утилиты ''libcamera-still'' с сохранением в файл на рабочем столе с именем ''image-example.png''.
libcamera-still -t 2000 -o /home/pi/Desktop/image-example.png
В результате на рабочем столе появится файл фотографии с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-libcamera-utils.2.jpg?nolink |}}
=== Запись видео ===
Используйте модуль в режиме видеокамеры — снимите минутный ролик с помощью утилиты ''libcamera-vid'' и сохраните его на рабочем столе с именем ''video-example.h264''.
libcamera-vid -t 60000 -o /home/pi/Desktop/video-example.h264
После минутного ожидания на рабочем столе появится видеофайл с камеры. Для просмотра ролика используйте встроенный плеер малинки.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-libcamera-utils.3.jpg?nolink |}}
==== Примеры работы через Python ====
Перейдём к экспериментам с камерой через интегрированную среду разработки [[https://www.python.org/|Python]]. Для работы со стеком ''libcamera'' в Python предусмотрена библиотека ''Picamera2''. Примеры можно запускать через встроенный терминал или графическую оболочку Thonny Python IDE.
Более подробно про библиотеку ''Picamera2'' читайте в {{ :articles:raspberry-pi-camera-guide:python-lib-picamera2-manual.pdf |документации производителя}}.
=== Тест камеры ===
Для начала протестируем видоискатель камеры.
# Подключаем необходимые библиотеки
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()
На десять секунд на экране появится изображение с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-libcamera-python.1.jpg?nolink |}}
=== Захват фото ===
Попробуем сделать снимок с камеры и сохранить полученную фотографию.
# Подключаем необходимые библиотеки
from picamera2 import Picamera2
from time import sleep
# Создаём объект для работы с камерой
camera = Picamera2()
# Делаем снимок и сохраняем его на рабочий стол в формате png
camera.start_and_capture_file('/home/pi/Desktop/image-example.png')
В результате на рабочем столе появится файл фотографии с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-libcamera-python.2.jpg?nolink |}}
=== Запись видео ===
Используйте модуль в режиме видеокамеры — снимите минутный ролик и сохраните его на рабочий стол.
# Подключаем необходимые библиотеки
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 )
После минутного ожидания на рабочем столе появится видеофайл с камеры. Для просмотра ролика используйте встроенный плеер.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-libcamera-python.3.jpg?nolink |}}
===== Библиотека raspicam =====
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-raspicam.png?nolink&500 |}}
Стек ''raspicam'' — устаревший API с набором утилит:
* ''raspistill'' — для захвата фото;
* ''raspivid'' — для записи видео.
На основе ''raspicam'' также написан программный модуль ''PiСamera'' для Python. В последнее время библиотеку ''raspicam'' называют ''Legacy Camera''.
Более подробно про стек ''raspicam'' для работы с камерой читайте в [[https://www.raspberrypi.com/documentation/computers/camera_software.html#raspicam-applications|документации производителя]].
==== Поддерживаемые камеры ====
Библиотека ''raspicam'' поддерживает все камеры, вышедшие до 2022 года включительно.
Более современные камеры, которые вышли в 2023 году и позже, например [[amp>product/raspberry-pi-camera-module-3?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Raspberry Pi Camera Module 3]], ''raspicam'' уже не поддерживает.
==== Включение стека ====
Начиная с Raspberry Pi OS версии Bullsey программный стек ''raspicam'' отключён. Для включения следуйте инструкциям ниже.
- Откройте терминал на Raspberry Pi.{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-raspicam-enable.1.png?nolink |}}
- Зайдите в настройки Raspberry Pi.sudo raspi-config
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-raspicam-enable.2.png?nolink |}}
- Выберите пункт:
Interface Options
Legacy Camera.{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-raspicam-enable.3.gif?nolink |}}
- Выберите Yes для подтверждения включения поддержки Legacy Camera.{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-raspicam-enable.4.png?nolink |}}
- Перезагрузите Raspberry Pi.
==== Примеры работы через утилиты ====
Рассмотрим примеры работы камеры через встроенные утилиты.
Все команды выполняйте в терминале.
=== Тест камеры ===
Исполните инструкцию захвата изображения утилитой ''raspistill''.
raspistill -t 10000
На десять секунд на экране появится трансляция с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-raspicam-utils.1.jpg?nolink |}}
Отлично, модуль камеры исправен и готов к работе.
=== Захват фото ===
Попробуем сделать снимок камеры и сохранить полученную фотографию.
Не уменьшайте время включения модуля ниже двух секунд — камере необходима пауза между включением и выполнением снимка. За это время модуль автоматически скорректирует баланс белого и экспозицию.
Выполните команду захвата изображения с помощью утилиты ''raspistill'' с сохранением в файл на рабочем столе с именем ''image-example.png''.
raspistill -t 2000 -o /home/pi/Desktop/image-example.png
В результате на рабочем столе появится файл фотографии с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-raspicam-utils.2.jpg?nolink |}}
=== Запись видео ===
Используйте модуль в режиме видеокамеры — снимите минутный ролик с помощью утилиты ''raspivid'' и сохраните его на рабочем столе с именем ''video-example.h264''.
raspivid -t 60000 -o /home/pi/Desktop/video-example.h264
После минутного ожидания на рабочем столе появится видеофайл с камеры. Для просмотра ролика используйте встроенный плеер.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-raspicam-utils.3.jpg?nolink |}}
==== Примеры работы через Python ====
Перейдём к экспериментам с камерой через интегрированную среду разработки [[https://www.python.org/|Python]]. Для работы со стеком ''raspicam'' в Python предусмотрена библиотека ''PiСamera''. Примеры можно запускать через встроенный терминал или графическую оболочку Thonny Python IDE.
Более подробно про библиотеку ''PiCamera'' читайте в {{ :articles:raspberry-pi-camera-guide:python-lib-picamera-manual.pdf | документации производителя.}}
=== Тест камеры ===
Для начала протестируем видоискатель камеры.
# Подключаем необходимые библиотеки
from picamera import PiCamera
from time import sleep
# Создаём объект для работы с камерой
camera = PiCamera()
# Запускаем предпросмотр сигнала с камеры на экране поверх всех окон
camera.start_preview()
# Пауза программы на 10 секунд
sleep(10)
# Выключаем предпросмотр
camera.stop_preview()
На десять секунд на экране появится изображение с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-raspicam-python.1.jpg?nolink |}}
Отлично, модуль камеры исправен и готов к работе.
=== Захват фото ===
Попробуйте сделать снимок камеры и сохранить полученную фотографию.
Не уменьшайте время включения модуля ниже двух секунд — камере необходима пауза между включением и выполнением снимка. За это время модуль автоматически скорректирует баланс белого и экспозицию.
# Подключаем необходимые библиотеки
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()
В результате на рабочем столе появится файл фотографии с камеры.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-raspicam-python.2.jpg?nolink |}}
=== Запись видео ===
Используйте модуль в режиме видеокамеры — снимите минутный ролик и сохраните его на рабочий стол.
# Подключаем необходимые библиотеки
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()
После минутного ожидания на рабочем столе появится видеофайл с камеры. Для просмотра ролика используйте встроенный плеер.
{{ :articles:raspberry-pi-camera-guide:raspberry-pi-camera-guide-example-raspicam-python.3.jpg?nolink |}}
===== Ресурсы =====
==== Магазин ====
* [[amp>collection/cameras?utm_source=man&utm_campaign=raspberry-pi-camera-guide&utm_medium=wiki|Камеры для Raspberry Pi]]
==== Статьи ====
* [[https://www.raspberrypi.org/documentation/hardware/camera/README.md|Инструкция по работе с MIPI-камерами для Raspberry Pi от производителя]]
* [[https://www.raspberrypi.com/documentation/computers/camera_software.html#libcamera-and-libcamera-apps|Документация стека libcamera от производителя]]
* {{ :articles:raspberry-pi-camera-guide:python-lib-picamera2-manual.pdf |Документация библиотеки Picamera2 на Python от производителя}}
* [[https://www.raspberrypi.com/documentation/computers/camera_software.html#raspicam-applications|Документация стека raspicam от производителя]]
* {{ :articles:raspberry-pi-camera-guide:python-lib-picamera-manual.pdf |Документация библиотеки Picamera на Python от производителя}}