libcamera и rpicam-apps
Введение
libcamera — новая программная библиотека для поддержки сложных систем камер непосредственно из операционной системы Linux. На Raspberry Pi она позволяет управлять камерой напрямую из открытого кода, работающего на процессорах ARM.
libcamera предоставляет приложениям API на C++: библиотека настраивает камеру, после чего приложение может запрашивать кадры. Буферы изображений находятся в системной памяти и передаются напрямую в кодировщики фото (например, JPEG) или видео (например, H.264). Вспомогательные функции — кодирование и вывод изображений на экран — в задачи самой libcamera не входят.
В Arducam добавили поддержку большего числа камер RPI и расширили libcamera: автофокус, внешний запуск, функции стробирования, автоматическая загрузка параметров калибровки камеры. Всё это доступно в решении Pivariety и модифицированной версии libcamera.
libcamera- заменён на rpicam-. Пока старые имена работают через символические ссылки, но переходите на новые как можно скорее. В версиях Raspberry Pi OS до Bookworm по-прежнему используются имена libcamera-*.Picamera2 не поддерживается:
- в образах на основе Buster и более ранних выпусков;
- в образах Raspberry Pi OS Legacy;
- в образах Bullseye и новее, где снова включён устаревший стек камеры.
Подробнее о libcamera
Подробнее о libcamera для Raspberry Pi — в руководстве Raspberry Pi по ПО камер (раздел libcamera/rpicam).
libcamera — открытый проект сообщества Linux. Подробности — на официальном сайте libcamera.
Начало работы
Для штатных камер выберите страницу своей камеры:
Список плат штатных камер:
| Разрешение | Сенсор |
|---|---|
| 5 Мп | OV5647 |
| 8 Мп | IMX219 |
| 12 Мп | IMX477 |
| 12 Мп | 477M |
| 12 Мп | IMX708 |
| 12 Мп | IMX378 |
| 16 Мп | IMX519 |
| 64 Мп | 64MP Hawkeye |
| 64 Мп | 64MP OV64A40 |
| 0,3 Мп | OV7251 |
| 1,58 Мп | IMX296 |
| 1 Мп | OV9281 |
| 2 Мп | OV2311 |
| 2 Мп | IMX290/IMX462/IMX327 |
rpicam-hello
rpicam-hello — аналог программы «hello world» для камеры. Она запускает камеру, показывает окно предпросмотра и больше ничего не делает. (В версиях Raspberry Pi OS до Bookworm по-прежнему работает команда libcamera-hello.) Пример:
rpicam-hello
Чтобы посмотреть все параметры, запустите программу с ключом --help:
rpicam-hello --help
Другие параметры и опции — в официальной документации Raspberry Pi, раздел Camera Software: rpicam-hello.
rpicam-jpeg
rpicam-jpeg — простая программа для съёмки фото. В ней намеренно нет части дополнительных функций rpicam-still, которая старается полнее повторять raspistill. Поэтому её код заметно проще, а на практике она умеет многое из того же. (В версиях Raspberry Pi OS до Bookworm по-прежнему работает команда libcamera-jpeg.)
Чтобы снять JPEG в полном разрешении, выполните:
rpicam-jpeg -o test.jpg
Чтобы посмотреть все параметры, запустите программу с ключом --help:
rpicam-jpeg --help
Другие параметры и опции — в официальной документации Raspberry Pi, раздел Camera Software: rpicam-jpeg.
rpicam-still
rpicam-still очень похожа на rpicam-jpeg, но поддерживает больше параметров устаревшей raspistill. (В версиях Raspberry Pi OS до Bookworm по-прежнему работает команда libcamera-still.) Один снимок делается так же:
rpicam-still -o test.jpg
Непрерывная автоматическая съёмка
Автоматическая серийная съёмка: 1 кадр в секунду в течение 5 секунд.
rpicam-still -t 5000 --datetime -n --timelapse 1000
Чтобы посмотреть все параметры, запустите программу с ключом --help:
rpicam-still --help
Другие параметры и опции — в официальной документации Raspberry Pi, раздел Camera Software: rpicam-still.
Автофокус и ручная фокусировка
Камеры Arducam 16MP/64MP с автофокусом
Непрерывный автофокус
rpicam-still -t 0
rpicam-still -t 0 --autofocus-mode continuous
Однократный автофокус
rpicam-still -t 0 --autofocus-mode auto
Ручная фокусировка
Установка libcamera-tools
Управление с клавиатуры
Клавиши управления фокусом (в окне журнала libcamera):
- f + Enter — однократная автофокусировка;
- a + Enter — увеличить позицию объектива (шаг — 1 единица);
- d + Enter — уменьшить позицию объектива (шаг — 1 единица).
Порядок работы:
- Выполните команду, чтобы перейти в режим предпросмотра.
- Управляйте с клавиатуры в окне журнала libcamera.
- Вводите «a» или «d» и нажимайте Enter, чтобы сдвинуть фокус.
- Когда нужно, введите «f» и нажмите Enter для быстрой автофокусировки.
rpicam-still -t 0 --autofocus-mode manual -k
Позиция объектива
rpicam-still -t 0 --autofocus-mode manual --lens-position 5
Автофокус перед съёмкой
rpicam-still -t 0 --autofocus-on-capture
Диапазон фокусировки
# Normal
rpicam-still -t 0 --autofocus-range normal
# Close Focus
rpicam-still -t 0 --autofocus-range macro
Модули камер OV5647/IMX219 и IMX477
Подробности и порядок действий для этих модулей камер — в документах быстрого старта:
- Быстрый старт для камеры OV5647 с моторизованной фокусировкой
- Быстрый старт для камеры IMX219 с моторизованной фокусировкой
- Быстрый старт для камеры IMX477 с моторизованной фокусировкой
rpicam-vid
rpicam-vid — программа для записи видео. По умолчанию она использует аппаратный кодировщик H.264 Raspberry Pi, показывает окно предпросмотра и записывает закодированный поток в указанный выход. (В версиях Raspberry Pi OS до Bookworm по-прежнему работает команда libcamera-vid.) Например, чтобы записать в файл 10 секунд видео, выполните:
rpicam-vid -t 10000 -o test.h264
Для камер с мотором фокусировки в Arducam добавили параметры автофокуса: однократный и непрерывный.
Однократный автофокус:
rpicam-vid -t 0 --autofocus-mode auto
Автоматическая серийная съёмка: 1 кадр в секунду в течение 5 секунд.
rpicam-vid -t 5000 --datetime -n --timelapse 1000
Чтобы посмотреть все параметры, запустите программу с ключом --help:
rpicam-vid --help
Другие параметры и опции — в официальной документации Raspberry Pi, раздел Camera Software: rpicam-vid.
rpicam-raw
rpicam-raw похожа на программу записи видео, но записывает сырые кадры Bayer прямо с сенсора. Окна предпросмотра у неё нет. (В версиях Raspberry Pi OS до Bookworm по-прежнему работает команда libcamera-raw.) Чтобы записать 2 секунды сырых кадров, выполните:
rpicam-raw -t 2000 -o test.raw
Чтобы посмотреть все параметры, запустите программу с ключом --help:
rpicam-raw --help
Другие параметры и опции — в официальной документации Raspberry Pi, раздел Camera Software: rpicam-raw.