v4.5.9¶
v4.5.9 приносит потоковую передачу необработанного превью для плат без аппаратного JPEG-кодировщика, аппаратное кадрирование датчика для освобождения большего объёма ОЗУ, более быстрый дебайеринг с ускорением Helium и пакет исправлений камеры/USB-отладки. Он также меняет API результатов AprilTag и набор семейств AprilTag по умолчанию, поэтому прочитайте обратно несовместимые изменения ниже.
Основные моменты¶
Потоковая передача необработанного превью — платы без аппаратного JPEG-кодировщика теперь могут отправлять уменьшенные необработанные кадры в IDE/хост вместо неудачного превью.
Аппаратное кадрирование датчика — установка меньшего размера кадра теперь уменьшает память на буфер и освобождает ОЗУ для
fb_alloc().Более быстрый дебайеринг — преобразование Bayer→RGB/grayscale теперь ускорено Helium-SIMD на платах Cortex-M55.
Обратная несовместимость: объект результата AprilTag изменён на доступ через атрибуты, а набор семейств AprilTag по умолчанию сокращён (см. изменения AprilTag и изменение семейств AprilTag).
Новые возможности¶
Потоковая передача необработанного превью — платы без аппаратного JPEG-кодировщика могут обойти JPEG и передавать уменьшенные необработанные кадры (с ограничением около 60 КБ) в IDE/хост, так что живое превью работает на этих платах.
Прочие изменения и улучшения¶
Аппаратное кадрирование теперь включено на всех платах STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). При установке размера кадра или окна память на буфер уменьшается до размера кадрированной области, освобождая больше ОЗУ для
fb_alloc().Более быстрый дебайеринг — преобразование Bayer→RGB565/grayscale теперь ускорено ARM Helium/MVE SIMD на платах Cortex-M55 (например, RT1060), с общим SIMD-путём JPEG-кодировщика.
Более быстрая отладка IDE — отладчик теперь по возможности передаёт данные напрямую из USB-стека, избегая лишнего копирования.
Подмодуль MicroPython обновлён — платы могут изменять размер буфера TinyUSB CDC, плюс исправления GC и правил сборки.
Исправления ошибок¶
Камера и датчики:
Исправлен шаблон Bayer/CFA для OV7725 (GBRG → BGGR), что устраняет проблему с цветом на выходе дебайеринга на камерах OV7725; OV7725 теперь сообщает о формате пикселей Bayer, а датчики только с Bayer теперь сообщают об исходной глубине 1 байт на пиксель.
Исправлен расчёт размера необработанного/Bayer буфера кадра.
Машинное обучение:
TensorFlow Lite Micro теперь использует свободную память кучи GC при определении размера временной тензорной арены, предотвращая ошибки выделения памяти при загрузке модели на платах с ограниченной памятью буфера кадра.
Хост / IDE:
Исправлена обработка буфера USB-debug CDC на платах TinyUSB для более надёжной пропускной способности serial/debug.
tools/pyopenmv: исправлен порядок байтов RGB565, добавлен аргументscale, а инструмент буфера кадра теперь сообщает размер/формат изображения.
Аппаратное обеспечение и поддержка плат¶
OV7725 теперь сообщает о формате пикселей Bayer (корректная обработка raw/CFA).
Аппаратное кадрирование включено во всём диапазоне плат STM32/NXP.
Обратно несовместимые изменения API¶
Видимые пользователю изменения API между v4.5.8 и v4.5.9. Область: C-модули Python в modules/ и Python-библиотеки в scripts/libraries/.
Каждое изменение помечено степенью влияния:
minor — узкий API; затрагивает только использовавшие его скрипты.
behavior — тот же API, другие результаты; перепроверьте настроенные скрипты.
Изменения сгруппированы по влиянию в этом порядке. Если вы просто хотите перенести свой код, перейдите к контрольному списку миграции в конце. Каждый хэш коммита ссылается на его diff на GitHub.
Объекты результата AprilTag и set_buffers (minor)¶
Результаты AprilTag из find_apriltags() теперь предоставляют свои данные как атрибуты, а не методы — используйте tag.cx, tag.cy, tag.rotation, tag.family, tag.corners вместо tag.cx(), tag.family() и т.д. Добавлены новые аксессоры name (строка с именем семейства) и cxf / cyf с точностью float.
Отдельно изменилась автоматическая настройка видеобуфера: set_buffers заменяет auto_adjust — передайте -1, чтобы использовать до трёх буферов размером с кадр (или максимум, который помещается), и 1, чтобы использовать весь буфер кадра. Расчёт размера буфера теперь учитывает биты на пиксель, поэтому для форматов с 1 bpp можно выделить больше буферов.
ble_advertising и RPC-по-сети удалены (minor)¶
Вспомогательная библиотека ble_advertising и пример ble_temperature.py были удалены — используйте aioble (предоставляется пример температуры на aioble). Сетевые классы RPC master/slave были удалены из rpc.py.
Семейства AprilTag отключены по умолчанию (behavior)¶
Семейства AprilTag теперь выбираются по отдельности на этапе компиляции, а неиспользуемые отключены по умолчанию. На стандартных платах find_apriltags() теперь обнаруживает только семейство TAG36H11, если прошивка не пересобрана с включёнными другими семействами. Скрипты, полагающиеся на другие семейства (TAG16H5, TAG25H9, …) в стандартной сборке, незаметно перестанут их обнаруживать.
Коммит: effe12f2c
Контрольный список миграции¶
Для чистого переноса на v4.5.9 типичная работа такова:
Измените доступ к результатам AprilTag с вызовов методов на атрибуты (
tag.cx()→tag.cx) и переключитеauto_adjustнаset_buffers(изменения AprilTag / буферов).Замените
ble_advertisingнаaiobleи откажитесь от любого использования сетевых RPC master/slave (удаления).Если вы используете семейства AprilTag, отличные от
TAG36H11, в стандартной сборке, учтите, что они больше не обнаруживаются по умолчанию (изменение семейств AprilTag).