v4.5.1

v4.5.1 додає підказки орієнтації та пропорцій при малюванні зображень, завантаження зображень безпосередньо зі шляху до файлу, ioctl широкого кута огляду для GC2145 і новий API контролера підсвічування. Також переопрацьовано конструктор Image(), API display і розбір аргументів модуля — прочитайте про несумісні зміни нижче.

Основне

  • Підказки малюванняdraw_image() отримав підказки орієнтації (HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270) і масштабування за пропорціями (SCALE_ASPECT_KEEP/EXPAND/IGNORE).

  • Завантаження зображень з дискуdraw_image() / display.write() приймають рядок з шляхом до файлу.

  • Керування підсвічуванням — нові класи DACBacklight / PWMBacklight і аргумент backlight= для дисплея.

  • Несумісна зміна: конструктор Image(), API display і розбір аргументів модуля змінено — дивіться несумісні зміни.

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

  • Підказки орієнтації draw_image()image.HMIRROR, image.VFLIP, image.TRANSPOSE, а також зручні image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • Підказки пропорцій draw_image()image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE для вписування / розширення / розтягування.

  • Константи палітриimage.PALETTE_RAINBOW і image.PALETTE_IRONBOW (переміщено до модуля image).

  • Широкий кут огляду — нові ioctl sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE (для GC2145, до 5-кратного масштабування датчика).

  • Завантаження з дискуdraw_image() і display.write() приймають рядок зі шляхом до вихідного файлу зображення та завантажують його безпосередньо зі сховища.

  • Контролери підсвічування — нові класи DACBacklight і PWMBacklight (імпортуються з display) і аргумент тільки з ключовим словом backlight= для конструкторів SPI/паралельних дисплеїв.

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

  • Драйвер DSI-дисплея ST7701 переміщено до окремого модуля st7701.py (все ще імпортується через from display import *) і заморожено на Arduino Giga; драйвер IMU lsm9ds1 заморожено на Arduino Nano 33 BLE Sense.

  • Камери MT9V022 / MT9V034 (з глобальним затвором) тепер застосовують корекцію рядкового шуму для кращої якості зображення.

  • Том USB-масової пам’яті i.MX RT тепер позначено як диск OpenMV.

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

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

  • Виправлено виявлення кутів (find_keypoints() FAST/AGAST) на зображеннях висотою понад 480 рядків — буфер на рядок тепер розміровано за висотою зображення.

  • Додано підтримку виводу FSYNC для синхронізованих кадром snapshot() на i.MX RT (OpenMV RT1060), а також виправлено переплутані виводи SPI4 MOSI/MISO на RT1060.

Дисплей і відео:

  • Виправлено порядок аргументів конструктора SPIDisplay (bgr, byte_swap, triple_buffer застосовувалися до невірних параметрів).

  • Виправлено пошкодження зображення TV-щита під час малювання зображення із заданим прямокутником і неправильні межі кадру MJPEG під час запису масштабованих кадрів.

Мережа:

  • Режим точки доступу WINC WiFi більше не застосовує застаріле обмеження лише для WEP — відкриті режими та режими WPA AP працюють із правильною обробкою PSK.

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

  • OpenMV RT1060 — вивід FSYNC і виправлені виводи SPI4.

  • Arduino GIGA — обхідний засіб надійності QSPI; заморожено драйвер дисплея ST7701.

  • Arduino Nano 33 BLE Sense — заморожено драйвер IMU lsm9ds1.

Несумісні зміни API

Видимі користувачу несумісні зміни API між v4.5.0 і v4.5.1. Область дії: C-модулі Python у modules/ і бібліотеки Python у scripts/libraries/.

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

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

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

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

Конструктор Image() та API display (minor)

Конструктор image.Image переопрацьовано для використання іменованих аргументів (height, pixformat, buffer=, copy_to_fb=); тепер він може будувати зображення з наявного bytearray/буфера, а для стиснутих форматів буфер є обов’язковим. display.write() переопрацьовано: x_scale/y_scale тепер приймають число з плаваючою комою (коефіцієнт масштабування) або ціле число (цільовий розмір у пікселях), а окремі ключові слова x_size/y_size видалено. Перший позиційний аргумент WINC.connect() перейменовано з essid на ssid, а результати сканування WINC WiFi змінено на (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID тепер байти; BSSID більше не є відформатованим MAC-рядком).

Коміти: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

Діапазон підсвічування, масштабування та аргументи лише з ключовим словом (behavior)

Display.backlight() тепер приймає інтенсивність від 0 до 100 (0 = вимкнено, 100 = максимум) замість 0–255, виникає ValueError при виході за межі діапазону. Цілочисельні значення x_scale/y_scale тепер трактуються як мультиплікативний коефіцієнт масштабування (так само, як числа з плаваючою комою), а не як цільовий розмір у пікселях — це впливає на fir.snapshot()/draw_ir(), tof.snapshot()/draw_depth(), display і масштабування tv. Розбір аргументів у модулях sensor, fir, tof, tv, mjpeg, gif, imageio, tf і audio уніфіковано, через що кілька раніше позиційних параметрів стали лише іменованими (назви, значення за замовчуванням і поведінка не змінилися).

Коміти: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd

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

Для чистого переходу на v4.5.1 зазвичай потрібно виконати:

  1. Оновіть конструкцію Image() до нової форми з іменованими аргументами, перейдіть з x_size/y_size у display.write() і перейменуйте essidssid у WINC.connect() (обробляйте нові кортежі сканування на основі байтів) (зміни конструктора/дисплея/WINC).

  2. Перемасштабуйте виклики Display.backlight() до діапазону 0–100, перевірте використання цілочисельних значень x_scale/y_scale і передавайте колишні позиційні аргументи модулів як іменовані (зміни поведінки).