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, масштабирование датчика до 5x).Загрузка с диска —
draw_image()иdisplay.write()принимают строку файлового пути исходного изображения, загружая его напрямую из хранилища.Контроллеры подсветки — новые классы
DACBacklightиPWMBacklight(импортируемые изdisplay) и аргументbacklight=(только по ключевому слову) в конструкторах SPI/параллельных дисплеев.
Прочие изменения и улучшения¶
Драйвер дисплея ST7701 DSI перенесён в собственный модуль
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 работают с корректной обработкой 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, но другие результаты; перепроверьте настроенные скрипты.
Изменения сгруппированы по влиянию именно в этом порядке. Если вы просто хотите перенести свой код, перейдите к контрольному списку миграции в конце. Каждый хеш коммита ведёт на его diff на GitHub.
Конструктор Image() и API display (minor)¶
Конструктор image.Image был переработан на именованные аргументы (height, pixformat, buffer=, copy_to_fb=); теперь он может создавать изображение из существующего bytearray/буфера, а для сжатых форматов требуется буфер. display.write() был переработан: x_scale/y_scale теперь принимают float (коэффициент масштабирования) или int (целевой размер в пикселях), а отдельные ключевые слова x_size/y_size были удалены. Первый позиционный аргумент WINC.connect() был переименован essid → ssid, а результаты сканирования WINC WiFi изменились на (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID теперь являются bytes; BSSID больше не является форматированной MAC-строкой).
Диапазон подсветки, масштабирование и аргументы только по ключевым словам (behavior)¶
Display.backlight() теперь принимает интенсивность 0–100 (0 = выкл, 100 = полная) вместо 0–255, вызывая ValueError при выходе за пределы. Целочисленные значения x_scale/y_scale теперь трактуются как мультипликативный коэффициент масштабирования (так же, как float), а не как целевой размер в пикселях — это затрагивает 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()до новой именованной формы, переведитеdisplay.write()сx_size/y_sizeи переименуйтеWINC.connect()essid→ssid(обработайте новые кортежи сканирования на основе bytes) (изменения конструктора/дисплея/WINC).Перемасштабируйте вызовы
Display.backlight()на диапазон 0–100, перепроверьте любое использование целочисленныхx_scale/y_scaleи передавайте ранее позиционные параметры модулей по ключевому слову (изменения поведения).