====== Как подключить и настроить модуль камеры для 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/https://amperka.ru/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/https://amperka.ru/product/raspberry-pi-no-ir-camera-board?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 от производителя}}