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 можно выделить больше буферов.

Коммиты: c0d4759f8, 7b36e4ef6

ble_advertising и RPC-по-сети удалены (minor)

Вспомогательная библиотека ble_advertising и пример ble_temperature.py были удалены — используйте aioble (предоставляется пример температуры на aioble). Сетевые классы RPC master/slave были удалены из rpc.py.

Коммиты: 6513276c1, 44a7e579d

Семейства AprilTag отключены по умолчанию (behavior)

Семейства AprilTag теперь выбираются по отдельности на этапе компиляции, а неиспользуемые отключены по умолчанию. На стандартных платах find_apriltags() теперь обнаруживает только семейство TAG36H11, если прошивка не пересобрана с включёнными другими семействами. Скрипты, полагающиеся на другие семейства (TAG16H5, TAG25H9, …) в стандартной сборке, незаметно перестанут их обнаруживать.

Коммит: effe12f2c

Контрольный список миграции

Для чистого переноса на v4.5.9 типичная работа такова:

  1. Измените доступ к результатам AprilTag с вызовов методов на атрибуты (tag.cx()tag.cx) и переключите auto_adjust на set_buffers (изменения AprilTag / буферов).

  2. Замените ble_advertising на aioble и откажитесь от любого использования сетевых RPC master/slave (удаления).

  3. Если вы используете семейства AprilTag, отличные от TAG36H11, в стандартной сборке, учтите, что они больше не обнаруживаются по умолчанию (изменение семейств AprilTag).