v3.7.0¶
v3.7.0 — це великий реліз. Він додає модуль audio (PDM-мікрофон Portenta H7) з новим неблокуючим API зворотного виклику, модуль TensorFlow для розпізнавання мовлення micro_speech, абсолютно новий паралельний LCD-контролер RGB (з виходом HDMI та сенсорним екраном FT5X06), метод image.flush() з константами формату пікселів та перероблений конвеєр масштабування image.draw_image(). Декілька застарілих допоміжних бібліотек та методів зображення було видалено, а математика yuv_to_* змінилася — ознайомтесь із несумісними змінами нижче.
Основні зміни¶
Модуль
audio— захоплення вбудованого PDM-мікрофона Portenta H7 з неблокуючим APIstart_streaming(callback).micro_speech— модуль TensorFlow для розпізнавання мовлення.Новий LCD-контролер — підтримка паралельного RGB-дисплея, вихід HDMI (TFP410) та сенсорний екран FT5X06.
image.draw_image()— перероблено з повним конвеєром масштабування/альфа/палітри (x_scale/y_scale/hint/color_palette…).image.flush()плюс константи формату пікселів (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).Несумісні зміни: видалено застарілі математичні допоміжні бібліотеки та декілька методів зображення, перероблено API
draw_image()/ LCD,yuv_to_*більше не віднімає 128 — дивіться несумісні зміни.
Нові можливості¶
audio— новий модульaudioдля Portenta H7 для захоплення PDM-мікрофона:audio.init(), неблокуючийaudio.start_streaming(callback)таaudio.stop_streaming()(частота задається в Гц).micro_speech— новий модуль з класомMicroSpeech,audio_callback()таmicro_speech()для розпізнавання мовлення TensorFlow;listen()використовує ковзне вікно і приймає ключове словоfilterдля обмеження результатів списком міток.LCD — новий LCD-контролер з підтримкою паралельного RGB-дисплея, типами
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, безліччю констант розміру кадру,triple_buffer/framesize/refresh/bgr/deinit, розширенимdisplay, виходом HDMI через TFP410 та підтримкою сенсорного екрана FT5X06.image.flush()— додано методimage.flush()та константи формату пікселів (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).image.draw_image()— перероблено з новим конвеєром масштабування:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteтаhint, плюс константиimage.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTта нові приклади альфа-змішування / таблиці кольорів / масштабування.ImageReader.next_frame()отримав ключове словоpauseдля вимкнення затримки відтворення в реальному часі.Додано приклади аудіо для Portenta (
audio_fft.py,micro_speech.py) та приклад пробудження ExtInt із режиму зупинки.
Інші зміни та покращення¶
Вбудовані приклади реорганізовано в
scripts/examples/Arduino/; кадровий буфер тепер оновлюється миттєво після завантаження/створення зображень зcopy_to_fb=True(ручне скидання не потрібне); купа Portenta трохи зменшена, щоб помістити більше статичного стану драйвера.
Виправлення помилок¶
Камера та обробка зображень:
Виправлено переставлені червоний/синій (порядок байтів RGB565) у захоплених зображеннях, заокруглення малювання DMA2D для відповідності іншому коду малювання, пошкодження
fb_allocпри рекурсивних виділеннях (find_blobs()), таtop_hat()/black_hat()тепер увімкнені лише коли дозволені бінарні та математичні операції.
Дисплей та аудіо:
Виправлено вихід LCD-шилда та режим моно-аудіо з 1 каналом на Portenta.
Portenta:
Обійдено проблему Ethernet/SDRAM (встановлено
rst_ethу високий рівень) та виправлено конфігурацію часових параметрів SDRAM.
Апаратне забезпечення та підтримка плат¶
Arduino Portenta H7 — захоплення аудіо вбудованим PDM-мікрофоном (SAI / PDM2PCM).
LCD — новий паралельний RGB-контролер дисплея (LTDC увімкнено у збірці H7), вихід HDMI через TFP410 та підтримка LCD з сенсорним екраном FT5X06.
Несумісні зміни API¶
Видимі для користувача несумісні зміни API між v3.6.9 та v3.7.0. Область застосування: Python C-модулі в modules/ та бібліотеки Python в scripts/libraries/.
Кожна зміна позначена своїм впливом:
minor — вузький API; стосується лише скриптів, що його використовували.
behavior — той самий API, інші результати; перевірте налаштовані скрипти.
Зміни згруповані за впливом у такому порядку. Якщо ви просто хочете перенести свій код, перейдіть до контрольного списку міграції в кінці. Кожен хеш коміту веде до його різниці на GitHub.
Видалено застарілі математичні допоміжні бібліотеки (minor)¶
Допоміжні бібліотеки mtx, rv, ulinalg, umatrix та vec видалено з scripts/libraries на користь ulab. Скрипти, що виконують import будь-якої з них, перестануть працювати і мають бути перенесені на ulab.
Коміти: 1f7da9272
Видалено remove_shadows() / chrominvar() / illuminvar() (minor)¶
image.remove_shadows(), image.chrominvar() та image.illuminvar() видалено без заміни. Скрипти, що викликають ці методи, повинні видалити ці виклики.
Коміти: 3173c2bb3
Перероблено сигнатуру image.draw_image() (minor)¶
image.draw_image() перероблено на основі нового конвеєра масштабування. Старі позиційні аргументи alpha / одинарний scale та попередній порядок позиційних аргументів більше не застосовуються; використовуйте нову форму з ключовими словами (x_scale= / y_scale= або x_size= / y_size=, alpha=, color_palette=, hint= …).
Коміти: 3439f8824
Переписано модуль LCD (minor)¶
Модуль lcd переписано для нового контролера дисплея. lcd.init() тепер приймає type дисплея (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) та нові ключові аргументи, а поверхня констант/API суттєво реорганізована. Старі скрипти лише для шилда здебільшого ще працюють, але типові значення та поведінка змінилися — перегляньте LCD-скрипти відповідно до нового API type / framesize.
Коміти: 185538207
yuv_to_* більше не віднімає 128 (behavior)¶
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() тепер трактують елемент кортежу Y як беззнакове значення 0–255 замість відніманням 128. Для отримання тих самих кольорів, що й раніше, передавайте Y без попереднього зсуву −128.
Коміти: dcf141192
Контрольний список міграції¶
Для чистого переносу на v3.7.0 типова робота включає:
Перенесіть використання
mtx/rv/ulinalg/umatrix/vecнаulab(видалення математичних бібліотек).Видаліть виклики
image.remove_shadows()/chrominvar()/illuminvar()(видалені методи зображення).Оновіть виклики
image.draw_image()до нової сигнатури з ключовими словами (переробка draw_image).Перегляньте LCD-скрипти відповідно до нового API
lcdtype/framesize(переписання LCD).Видаліть зсув −128 при передачі Y до
yuv_to_*(зміна yuv_to_*).
Всі інші скрипти працюють без змін.