v4.4.3

v4.4.3 представляет плату OpenMV RT1060 (NXP i.MX RT1060), значительно расширенный API записи MJPEG, новые методы обработки изображений ISP (автобаланс белого, матрица цветокоррекции, гамма) и MicroPython 1.20. Имена плат Arduino были изменены, а значения по умолчанию для MJPEG сместились — ознакомьтесь с критическими изменениями ниже.

Основные изменения

  • OpenMV RT1060 — новая плата NXP i.MX RT1060 (и ревизия REV2).

  • Расширенный API MJPEGwrite(), count, is_closed, sync(), именованные аргументы ROI/палитры/альфа, а также финализатор.

  • Новые методы ISPimage.awb(), image.ccm(), image.gamma().

  • MicroPython обновлён до 1.20.0.

  • Критическое изменение: цели сборки для плат Arduino были переименованы, а качество MJPEG по умолчанию изменилось — см. критические изменения.

Новые возможности

  • OpenMV RT1060 — полный порт NXP i.MX RT1060 (драйверы датчика, GPIO, I2C, SPI) и конфигурация платы, а также поддержка ревизии платы RT1060 REV2 и machine.RTC с будильником/пробуждением на порте i.MX RT.

  • MJPEG — новый метод Mjpeg.write() (с именованными аргументами roi, rgb_channel, alpha, color_palette, alpha_palette, hint), а также count, is_closed, sync() и финализатор __del__, и псевдонимы конструктора MJPEG / Mjpeg / mjpeg.

  • Методы обработки изображений ISPimage.awb([max]) (автобаланс белого), image.ccm(matrix) (матрица цветокоррекции 3x3 / 4x3) и image.gamma(gamma, contrast, brightness).

  • AprilTag — новые атрибуты центроида с плавающей точкой cxf / cyf (cx / cy по-прежнему возвращают округлённые целые числа).

  • MLtf.regression() теперь принимает ulab ndarray и поддерживает двумерные входные тензоры (одномерные по-прежнему поддерживаются); в встроенных библиотеках libtf были включены дополнительные операции TensorFlow Lite.

Прочие изменения и улучшения

  • MicroPython обновлён до 1.20.0; ulab обновлён до 6.0.12.

  • image.gamma / gamma_corr переработаны как метод ISP и расширены для поддержки изображений Bayer и YUV (не только изменяемых изображений).

  • Платы STM32 (Portenta H7, Nicla Vision) перешли на драйвер WiFi cyw43 с открытым исходным кодом.

  • Библиотека rtsp стала переносимой (использует random/time вместо pyb); urequests теперь всегда закрывает свой сокет.

Исправления ошибок

Камера и датчики:

  • Исправлены тактовая частота OV767x (CLKRC) на Arduino Nano 33 BLE Sense, обработка обхода CLKRC / предделителя на OV7670 и перепутанные линии данных D0/D1 на Arduino Nicla Vision / ML kit (порт nrf).

Система и USB:

  • Исправлена обработка коротких USB-пакетов в режиме отладки TinyUSB (более надёжные передачи между IDE/хостом).

  • Исправлены полярность мигающего светодиода на OpenMV RT1060 и определение SD-карты при включении питания.

Поддержка оборудования и плат

  • OpenMV RT1060 — новая плата NXP i.MX RT1060, а также ревизия REV2.

  • STM32 — Portenta H7 / Nicla Vision переведены на драйвер WiFi cyw43 с открытым исходным кодом.

Критические изменения API

Видимые пользователю изменения API между v4.4.2 и v4.4.3. Область: C-модули Python в modules/ и библиотеки Python в scripts/libraries/.

Каждое изменение помечено степенью его влияния:

  • behavior — тот же API, другие результаты; перепроверьте настроенные скрипты.

  • tooling — затрагивает именование/прошивку плат, а не Python API.

Изменения сгруппированы по влиянию в этом порядке. Каждый хеш коммита ведёт на его diff на GitHub.

Значения по умолчанию MJPEG и обработка ошибок (behavior)

Код записи MJPEG был переработан. Значение JPEG quality по умолчанию для add_frame() / write() было повышено с 50 до 90 (записи по умолчанию стали больше и качественнее), недопустимое значение качества теперь вызывает ValueError, операции с закрытым файлом теперь вызывают OSError, а методы записи теперь возвращают объект Mjpeg. Скрипты, зависевшие от прежнего качества по умолчанию или прежнего поведения при ошибках, следует перепроверить.

Коммит: 3fc55ad31

Цели сборки плат Arduino переименованы (tooling)

Цели сборки плат Arduino были переименованы в соответствии с обновлённым соглашением об именовании, и все манифесты плат (наборы замороженных модулей) были обновлены. Это не изменяет Python API, но имена файлов прошивки/плат, используемые для сборки или прошивки плат Arduino, изменились — обновите свой инструментарий соответствующим образом.

Коммиты: 77a7d16c0, 59d9f2603

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

Для чистого переноса на v4.4.3: перепроверьте записи MJPEG на новое качество по умолчанию и поведение при ошибках (изменение MJPEG) и обновите инструментарий сборки/прошивки для переименованных целей плат Arduino (переименование плат). Все остальные скрипты работают без изменений.