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() були видалені.
API модуля дисплея (minor)¶
Застарілий резервний псевдонім модуля udisplay був видалений — модуль реєструється лише як display. Методи dsi_write() / dsi_read(), специфічні для DSI, були замінені на bus_write() / bus_read(), які тепер доступні на всіх контролерах дисплея.
Зміни 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) моделі.
Зміни поведінки 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 типова робота включає:
Припиніть використання
Image.div()/cartoon()/mul()(видалені методи).Імпортуйте модуль дисплея як
displayі замінітьdsi_write/dsi_readнаbus_write/bus_read(зміна API дисплея).Оновіть конструкцію
MQTTClient(portє обов’язковим;ssl_params/callback) та будь-які викликиtf.regression()(зміни API бібліотек).Передавайте
maxдляawb()таgamma/contrast/brightnessдляgamma()як ключові аргументи, і перевірте припущення щодо YUV422/транспонування та безпеки AP-режиму (зміни ISP/датчика).