v4.5.3

v4.5.3 — це великий реліз: автофокус OV5640, антиаліасинг при малюванні ліній, апаратний декодер JPEG у основній гілці, значне розширення можливостей i.MX RT (RT1060), а також широкий набір виправлень камери та ISP. Кілька рідко використовуваних методів зображень було видалено, а деякі API ISP/дисплея змінено — читайте список критичних змін нижче.

Основні зміни

  • Автофокус OV5640 — увімкнено на OpenMV 4 / 4 Plus / RT1060 (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), з прикладом.

  • Антиаліасинг у draw_line() та апаратний декодер JPEG для STM32 у основній гілці (швидше декодування JPEG).

  • OpenMV RT1060 отримав ulab, операції ISP, set_framerate() / set_frame_callback(), значно більший кадровий буфер та драйвер CAN.

  • Критично: Image.div() / cartoon() / mul() були видалені, а деякі API ISP/дисплея змінено — дивіться список критичних змін.

Нові можливості

  • Автофокус OV5640 — мікропрограма автофокуса увімкнена на OPENMV4, OPENMV4P та OPENMV RT1060; запускайте його за допомогою sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Додано новий приклад 07-Sensor-Control/autofocus.py.

  • Антиаліасинг при малюванні лінійdraw_line() отримав підтримку антиаліасингу.

  • Користувацькі контролери SPI-дисплеяSPIDisplay тепер приймає ключове слово controller= і надає хук bus_write для власних послідовностей ініціалізації/команд.

  • Оновлення Image.ccm() — тепер приймає вкладені матриці 3x3 / 4x3 / 3x4 / 4x4 та масиви ulab (з необов’язковим рядком зміщення для кожного каналу); додано приклад корекції кольору.

  • Захоплення JPEG на i.MX RT — захоплення sensor.JPEG на Arduino Portenta/Nicla Vision/Giga, плюс set_framerate() і set_frame_callback() на порту mimxrt.

  • Валідація моделей TFLite — моделі тепер містять хеш порядку операторів та розмір набору операторів.

  • WiFi — додано константи режиму безпеки CYW43; нові приклади скриптів керування платою i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).

Інші зміни та покращення

  • MicroPython оновлено до 1.22; CMSIS оновлено до 5.9.0.

  • Апаратний декодер JPEG STM32 у основній гілці — швидше декодування JPEG на вбудованому кодеку мікросхеми.

  • Оптимізовано Image.invert() / negate() та бінарні/математичні операції над зображеннями (інтринсики CMSIS).

  • Бібліотеки rpc та vl53l1x стали портативними (використовують machine / time замість pyb), тому вони працюють на портах, відмінних від STM32.

  • Прискорена через DMA операція memcpy кадрового буфера на OpenMV H7 / H7 Plus / Pro / Pure Thermal та Arduino Giga / Nicla Vision / Portenta H7; STM32 тепер сканує пристрої I2C один раз за скан для швидшого завантаження.

Виправлення помилок

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

  • Виправлено тактовий сигнал XCLK камери STM32 до справжнього робочого циклу 50% та помилку при встановленні частоти тактування камери рівною нулю; виправлено обрізку+транспонування Bayer, зміщення кольору YUV422 та set_windowing() на порту mimxrt.

  • Виправлено зчитування ідентифікатора мікросхеми GC2145 та hmirror/vflip при повернутому монтажі; виправлено PAJ6100 на RT1062 та переповнення буфера SPI для PixArt PAJ7620/PAW3902.

Обробка зображень:

  • Виправлено обрізку ROI у find_rects(), усічення дробового зміщення у morph(), значення контрасту/яскравості за замовчуванням у image.gamma(), зміщення A/B у get_threshold() для RGB565, та декодування JPEG розмірів, що не кратні 8.

Система та бібліотеки:

  • machine.LED.value() без аргументу тепер повертає стан LED замість його скидання; виправлено деініціалізацію SSEL SPI на спільній шині, machine.deepsleep() на RT1062, збій TF при відсутніх операторах та автоактивацію NIC WINC1500/ninaw10 при connect().

Апаратне забезпечення та підтримка плат

  • OpenMV RT1060 — увімкнено ulab та операції ISP, збільшено кадровий буфер (10M→20M) / fb_alloc (2M→11M), відновлено драйвер CAN, більше пам’яті heap.

  • Arduino GIGA — підтримка камери GC2145 з автоматичним визначенням GC2145/OV5640 (вони мають однакову адресу I2C).

  • i.MX RT — підтримка захоплення sensor.JPEG.

Критичні зміни API

Видимі для користувача зміни API між v4.5.2 та v4.5.3. Охоплення: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.

Кожна зміна позначена рівнем впливу:

  • minor — вузький API; впливає лише на скрипти, що його використовували.

  • behavior — той самий API, але інші результати; перевірте налаштовані скрипти.

Зміни згруповані за рівнем впливу у такому порядку. Якщо ви просто хочете перенести свій код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту посилається на його різницю на GitHub.

Видалені методи зображень (minor)

Image.div(), Image.cartoon() (та його приклад) і Image.mul() були видалені.

Коміти: 7c932602e, 055a468b8, 4fe7fb63b

API модуля дисплея (minor)

Застарілий резервний псевдонім модуля udisplay був видалений — модуль реєструється лише як display. Методи dsi_write() / dsi_read(), специфічні для DSI, були замінені на bus_write() / bus_read(), які тепер доступні на всіх контролерах дисплея.

Коміти: 7df6694c3, 7d1f378a0

Зміни API MQTT та tf.regression (minor)

MQTTClient бібліотеки mqtt було перероблено: port тепер обов’язковий, додано нові ключові слова конструктора ssl_params / callback та аргумент timeout у connect(); старі значення за замовчуванням ssl= / port=0 були видалені, а check_msg() тепер є неблокуючим. tf.regression() було переписано — його сигнатура тепер regression(model, array) і він обробляє 1D/2D/3D та квантовані (int8) моделі.

Коміти: d12874c63, c5ec576c1

Зміни поведінки ISP / датчика (behavior)

Image.awb() було перероблено — тепер явно задається сірий світ (за замовчуванням) або білий відбиток (max=True), а аргумент max та аргументи gamma / contrast / brightness для Image.gamma() тепер є ключовими словами (позиційні виклики потрібно оновити). Транспонування зображення тепер вимкнено для YUV422 (раніше давало некоректний результат), а зміщення кольору YUV422 виправлено для відповідності Bayer. Шлях JPEG для STM32 тепер генерує помилку при невідповідності геометрії JPEG замість створення пошкодженого зображення, а режим WiFi AP тепер застосовує режим безпеки за замовчуванням на портах STM32 та i.MX RT.

Коміти: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af

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

Для чистого переходу на v4.5.3 типова робота включає:

  1. Припиніть використання Image.div() / cartoon() / mul() (видалені методи).

  2. Імпортуйте модуль дисплея як display і замініть dsi_write/ dsi_read на bus_write/bus_read (зміна API дисплея).

  3. Оновіть конструкцію MQTTClient (port є обов’язковим; ssl_params/callback) та будь-які виклики tf.regression() (зміни API бібліотек).

  4. Передавайте max для awb() та gamma/contrast/brightness для gamma() як ключові аргументи, і перевірте припущення щодо YUV422/транспонування та безпеки AP-режиму (зміни ISP/датчика).