v3.7.0¶
v3.7.0 — крупный релиз. Он добавляет модуль audio (PDM-микрофон Portenta H7) с новым неблокирующим API на основе функций обратного вызова, модуль распознавания речи TensorFlow micro_speech, совершенно новый контроллер параллельного RGB LCD (с выводом HDMI и сенсорным экраном FT5X06), метод image.flush() с константами формата пикселей и переписанный конвейер масштабирования image.draw_image(). Несколько устаревших вспомогательных библиотек и методов изображения были удалены, а математика yuv_to_* изменилась — прочтите раздел несовместимых изменений ниже.
Основные моменты¶
Модуль
audio— захват со встроенного PDM-микрофона Portenta H7 с неблокирующим APIstart_streaming(callback).micro_speech— модуль распознавания речи 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, множеством констант framesize, параметрами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) и пример пробуждения из режима stop по ExtInt.
Прочие изменения и улучшения¶
Встроенные примеры реорганизованы в
scripts/examples/Arduino/; буфер кадра теперь обновляется мгновенно после загрузки/создания изображений сcopy_to_fb=True(ручной flush не нужен); куча Portenta немного уменьшена, чтобы вместить больше статического состояния драйверов.
Исправления ошибок¶
Камера и обработка изображений:
Исправлены перепутанные красный/синий (порядок байтов RGB565) в захваченных изображениях, округление отрисовки DMA2D приведено в соответствие с остальным кодом отрисовки, повреждение
fb_allocпри рекурсивных аллокациях (find_blobs()), аtop_hat()/black_hat()теперь доступны только при включённых одновременно бинарных и математических операциях.
Дисплей и аудио:
Исправлены вывод на LCD shield и одноканальный моно-режим аудио на 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, другой результат; перепроверьте настроенные скрипты.
Изменения сгруппированы по влиянию в этом порядке. Если вам просто нужно перенести свой код, перейдите к контрольному списку миграции в конце. Каждый хеш коммита ведёт на его diff на 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 существенно реорганизован. Старые скрипты только для shield в основном по-прежнему работают, но значения по умолчанию и поведение изменились — проверьте скрипты 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
type/framesizeмодуляlcd(переписывание LCD).Убрать смещение −128 при передаче Y в
yuv_to_*(изменение yuv_to_*).
Все остальные скрипты работают без изменений.