За несколько дней до выпуска Raspberry Pi Camera Module 3 с поддержкой HDR и автофокуса, компания Raspberry Pi Trading предложила протестировать новые модули и предоставила три образца: стандартный модуль, Raspberry Pi Camera Module 3 Wide, а также NoIR версию без ИК-фильтра, предназначенную для съемки в условиях низкой освещенности.
Доставка посылки через DHL заняла целую неделю, но теперь появилась возможность протестировать новую Raspberry Pi Camera Module 3, в основном с использованием libcamera, а также Picamera2, уделяя особое внимание новым функциям, таким как HDR, автофокус и широкоугольный объектив. Также был проведен краткий тест Raspberry Pi Camera Module 3 NoIR, но без ИК-подсветки.
Постоянные читатели знают, что ранее уже были созданы самодельные крепления для камеры из пустых бутылочек от жевательной резинки , и для этого обзора наклейки Lotte XYLITOL были заменены на наклейки CNXSoft.
Начало работы с Raspberry Pi Camera Module 3
При первом использовании камеры возникли некоторые проблемы из-за того, что поиск в интернете привел к устаревшей документации на сайте Raspberry Pi dot org, где рекомендуется включить камеру в настройках и raspi-config. Актуальная документация находится на Raspberry Pi dot com . Проблемы также возникли из-за того, что образ Raspberry Pi OS был загружен месяц назад, и при использовании приложения libcamera-hello для проверки обнаружения камеры выводилось сообщение «no camera is available». После обновления системы через apt все заработало корректно.
Хорошая новость заключается в том, что Raspberry Pi Camera Module 3 работает без дополнительной настройки. Достаточно установить последнюю версию Raspberry Pi OS или обновить существующую, а также убедиться, что используется актуальная документация.
Все три модуля были успешно обнаружены следующим образом:
- Raspberry Pi Camera Module 3:
1234567$ libcamera-hello --list-cameraДоступные камеры-----------------0 : imx708 [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a)Режимы: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (0, 0)/4608x2592 crop]2304x1296 [56.03 fps - (0, 0)/4608x2592 crop]4608x2592 [14.35 fps - (0, 0)/4608x2592 crop]
[Время форматирования: 0.0009 секунд] - Raspberry Pi Camera Module 3 Wide:
1234567pi@raspberrypi:~ $ libcamera-hello --list-cameraДоступные камеры-----------------0 : imx708_wide [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a)Режимы: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (0, 0)/4608x2592 crop]2304x1296 [56.03 fps - (0, 0)/4608x2592 crop]4608x2592 [14.35 fps - (0, 0)/4608x2592 crop]
[Время форматирования: 0.0003 секунд] - Raspberry Pi Camera Module 3 NoIR:
1234567pi@raspberrypi:~ $ libcamera-hello --list-cameraДоступные камеры-----------------0 : imx708_noir [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a)Режимы: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (0, 0)/4608x2592 crop]2304x1296 [56.03 fps - (0, 0)/4608x2592 crop]4608x2592 [14.35 fps - (0, 0)/4608x2592 crop]
[Время форматирования: 0.0003 секунд]
Каждый модуль имеет уникальный идентификатор, поэтому при разработке приложений, требующих определения типа камеры, проблем возникнуть не должно.
Во время тестирования с самодельным креплением возникли проблемы с модулем Camera Module 3 Wide: через некоторое время система выдавала ошибки или сообщала о недоступности камеры. Проверка соединения FPC-кабеля не помогла, и появилось предположение о повреждении модуля. Однако выяснилось, что камера была слегка смещена из разъема (она была извлечена для фото).
После повторной установки и фиксации широкоугольный модуль заработал корректно.
Тестирование HDR и автофокуса с libcamera
Начнем с примеров фото, сделанных с помощью libcamera. Первое фото — без HDR, стандартный модуль:
1 |
libcamera-jpeg --rotation 180 --hdr 0 -o rpi-cm3-no-hdr.jpg |

Изображение пришлось повернуть на 180 градусов из-за способа крепления модуля. Для просмотра оригинала (конвертированного в WebP) можно кликнуть на фото.
Теперь то же самое с HDR:
1 |
libcamera-jpeg --rotation 180 --hdr 1 -o rpi-cm3-hdr.jpg |

HDR фото с разрешением 2304 x 2196Фото было сделано за несколько часов до заката, и разница не столь значительна, но в HDR-версии лучше видны детали на левой стороне фона. Однако разрешение уменьшилось: с 4608 x 2592 до 2304 x 2196.

Пример крупного плана на расстоянии около 9 см от объективаCamera Module 3 (и NoIR) может фокусироваться от 10 см до бесконечности. Объект был размещен близко к камере. На небольшом HDMI-экране изображение выглядело четким, но из-за расстояния около 9 см логотип оказался слегка размытым. Фон размыт из-за фокусировки.
Для тестирования автофокуса при съемке видео использовалось приложение libcamera-vid. HDR был включен.
В условиях хорошего освещения автофокус работает достаточно быстро, даже с включенным HDR. Без HDR скорость автофокусировки немного выше.
Теперь переключимся на Raspberry Pi Camera Module 3 Wide, установленный в том же положении, что и первый модуль.

Пример с широкоугольной камеройБлагодаря большему углу обзора HDR проявляется лучше, становятся видны детали под крышей беседки.

Широкоугольная камера – пример с HDRЛоготип Linux Tux/CNXSoft был размещен на том же расстоянии (~9 см от объектива). Благодаря большему углу обзора видно больше бутылки, а изображение четче, так как широкоугольный модуль может фокусироваться от 5 см до бесконечности.

Пример крупного плана на расстоянии около 9 см от объективаАвтофокус работает достаточно хорошо в следующем видео.
Однако стоит отметить интересную особенность, характерную как для стандартного, так и для широкоугольного модулей. В режиме видео угол обзора увеличивается при включении HDR, тогда как без HDR зона захвата значительно меньше.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
pi@raspberrypi:~ $ libcamera-vid --rotation 180 --hdr 1 -o rpi-cm3-wide-auto-focus-hdr-tux.h264 -t 20000 Made X/EGL preview window [0:02:40.658604215] [1449] INFO Camera camera_manager.cpp:299 libcamera v0.0.2+55-5df5b72c [0:02:40.797061097] [1450] INFO RPI raspberrypi.cpp:1425 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media2 [0:02:40.797718687] [1449] INFO Camera camera.cpp:1026 configuring streams: (0) 640x480-YUV420 [0:02:40.797961668] [1450] INFO RPI raspberrypi.cpp:805 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 2304x1296-SRGGB10_1X10 - Selected unicam format: 2304x1296-pRAA Halting: reached timeout of 20000 milliseconds. pi@raspberrypi:~ $ libcamera-vid --rotation 180 --hdr 0 -o rpi-cm3-wide-auto-focus-no-hdr-tux.h264 -t 20000 Made X/EGL preview window [0:03:19.498184280] [1458] INFO Camera camera_manager.cpp:299 libcamera v0.0.2+55-5df5b72c [0:03:19.637463889] [1459] INFO RPI raspberrypi.cpp:1425 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media2 [0:03:19.638200351] [1458] INFO Camera camera.cpp:1026 configuring streams: (0) 640x480-YUV420 [0:03:19.638514628] [1459] INFO RPI raspberrypi.cpp:805 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 1536x864-SRGGB10_1X10 - Selected unicam format: 1536x864-pRAA Halting: reached timeout of 20000 milliseconds. |
Вероятно, это связано с тем, что разрешение при HDR устанавливается на 2304×1296, а без HDR — на 1536×864. Была попытка принудительно установить разрешение 4608×2592 или 2304×1296 в режиме без HDR:
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ libcamera-vid --rotation 180 --hdr 0 -o rpi-cm3-wide-auto-focus-no-hdr-tuxk-.h264 -t 20000 --width 4608 --height 2592 Made X/EGL preview window [0:06:48.468537458] [1497] INFO Camera camera_manager.cpp:299 libcamera v0.0.2+55-5df5b72c [0:06:48.605601452] [1498] INFO RPI raspberrypi.cpp:1425 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media2 [0:06:48.606294581] [1497] INFO Camera camera.cpp:1026 configuring streams: (0) 4608x2592-YUV420 [0:06:48.606555655] [1498] INFO RPI raspberrypi.cpp:805 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 4608x2592-SRGGB10_1X10 - Selected unicam format: 4608x2592-pRAA ERROR: *** failed to start output streaming *** |
Видео записываются в разрешении 640×480:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
pi@raspberrypi:~ $ mediainfo rpi-cm3-wide-auto-focus-hdr-tux.h264 General Complete name : rpi-cm3-wide-auto-focus-hdr-tux.h264 Format : AVC Format/Info : Advanced Video Codec File size : 4.41 MiB Overall bit rate mode : Constant Video Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4 Format settings : CABAC / 1 Ref Frames Format settings, CABAC : Yes Format settings, Reference frames : 1 frame Format settings, GOP : M=1, N=60 Bit rate mode : Constant Bit rate : 10 000 kb/s Width : 640 pixels Height : 480 pixels Display aspect ratio : 4:3 Frame rate : 30.000 FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 1.085 pi@raspberrypi:~ $ mediainfo rpi-cm3-wide-auto-focus-no-hdr-tux.h264 General Complete name : rpi-cm3-wide-auto-focus-no-hdr-tux.h264 Format : AVC Format/Info : Advanced Video Codec File size : 5.57 MiB Overall bit rate mode : Constant Video Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4 Format settings : CABAC / 1 Ref Frames Format settings, CABAC : Yes Format settings, Reference frames : 1 frame Format settings, GOP : M=1, N=60 Bit rate mode : Constant Bit rate : 10 000 kb/s Width : 640 pixels Height : 480 pixels Display aspect ratio : 4:3 Frame rate : 30.000 FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 1.085 |
NoIR камера должна демонстрировать лучшие результаты в темноте и ночью, особенно с ИК-подсветкой. Тестирование проводилось ночью с включенным светом.

Пример с NoIR камеройОжидалось розоватое изображение, поэтому результат показался необычным. Переключение на стандартную камеру для данной сцены не дало существенных отличий.

Пример стандартной Raspberry Pi Camera 3 в темной сценеТакже была протестирована NoIR камера днем, чтобы убедиться в различии вывода. Как и ожидалось, цвета оказались блеклыми и розоватыми, хотя и не столь выраженными, как примеры с NoIR v2 камеры .

NoIR камера (день) с HDR

Автофокус в режиме HDR с NoIR камерой ночью не сработал.
Иногда подобные проблемы возникали и днем, что зависит от сцены и условий освещения. Аналогичные проблемы встречаются и с DSLR камерами, но там можно использовать тачскрин или ручную фокусировку. Для Camera Module 3 также возможно реализовать такие функции, но потребуется сенсорный дисплей, энкодер и соответствующее ПО.
Camera Module 3 и Picamera2
В завершение была протестирована Python библиотека Picamera2 , официально выпущенная в сентябре прошлого года. Поскольку она основана на libcamera, тестирование проводилось только со стандартным модулем, чтобы убедиться в корректной реализации новых функций.
Было использовано приложение Qt Picamera2, установленное следующим образом:
1 2 |
git clone https://github.com/raspberrypi/picamera2 python3 picamera2/apps/app_full.py |
Приложение запустилось, и вывод камеры отображался как во вкладке Still Capture…
так и во вкладке Video.
Окно предпросмотра небольшое из-за использования HDMI-дисплея с разрешением 1280 x 800. На Full HD дисплее результат был бы лучше. Также отображается сообщение «HDR unavailable: install opencv to try it».
Поскольку Picamera2 — это Python библиотека, была попытка установить OpenCV через pip:
1 2 |
pip install --upgrade pip setuptools wheel pip install opencv-python |
Установка заняла около 1,5 часов и завершилась ошибкой из-за отсутствующего файла:
1 2 3 4 5 6 7 |
FileNotFoundError: [Errno 2] No such file or directory: '_skbuild/linux-armv7l-3.9/cmake-install/python/cv2/config-3.py' [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for opencv-python Failed to build opencv-python ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-based projects |
После четырех часов попыток выяснилось, что OpenCV следует устанавливать через apt:
1 |
sudo apt install python3-opencv |
Установка заняла 2-3 минуты, и опции HDR стали доступны, включая выбор количества HDR кадров и настройку гаммы.
Приложение предлагает множество других настроек, включая тонкую настройку изображения, панорамирование/зум, AEC/AWB. Также была обнаружена возможность ручной регулировки фокуса с помощью ползунка. Однако при нажатии кнопки «Take photo» Raspberry Pi 4 завис на несколько секунд (индикатор Numlock не реагировал), после чего приложение Qt Picamera2 аварийно завершилось. Проверка ядра показала, что система исчерпала память:
1 2 |
[ 362.162878] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=python3,pid=1401,uid=1000 [ 362.162950] Out of memory: Killed process 1401 (python3) total-vm:1328976kB, anon-rss:662432kB, file-rss:0kB, shmem-rss:396kB, UID:1000 pgtables:2176kB oom_score_adj:0 |
Помимо использования Full HD дисплея, рекомендуется запускать Qt приложение на плате с большим объемом ОЗУ, так как тестирование проводилось на Raspberry Pi 4 с 1 ГБ памяти. С утилитами командной строки на основе libcamera подобных проблем не возникало.
Благодарим Raspberry Pi Trading за предоставленные для обзора модули Camera Module 3. Стандартные версии стоят $25, широкоугольные — $35. Их можно приобрести у официальных дистрибьюторов Raspberry Pi.
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.