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(), APIdisplayі розбір аргументів модуля змінено — дивіться несумісні зміни.
Нові можливості¶
Підказки орієнтації
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; драйвер IMUlsm9ds1заморожено на 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-рядком).
Діапазон підсвічування, масштабування та аргументи лише з ключовим словом (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 зазвичай потрібно виконати:
Оновіть конструкцію
Image()до нової форми з іменованими аргументами, перейдіть зx_size/y_sizeуdisplay.write()і перейменуйтеessid→ssidуWINC.connect()(обробляйте нові кортежі сканування на основі байтів) (зміни конструктора/дисплея/WINC).Перемасштабуйте виклики
Display.backlight()до діапазону 0–100, перевірте використання цілочисельних значеньx_scale/y_scaleі передавайте колишні позиційні аргументи модулів як іменовані (зміни поведінки).