v3.7.0#
v3.7.0 je velké vydání. Přidává modul audio (PDM mikrofon na Portenta H7) s novým neblokujícím callback API, modul rozpoznávání řeči micro_speech pro TensorFlow, zcela nový řadič paralelního RGB LCD (s výstupem HDMI a dotykem FT5X06), metodu image.flush() s konstantami formátu pixelů a přepsaný škálovací řetězec image.draw_image(). Několik starších pomocných knihoven a metod obrazu bylo odstraněno a změnila se matematika yuv_to_* — přečtěte si zásadní změny níže.
Hlavní novinky#
Modul
audio— záznam z palubního PDM mikrofonu Portenta H7 s neblokujícím APIstart_streaming(callback).micro_speech— modul rozpoznávání řeči micro-speech pro TensorFlow.Nový řadič LCD — podpora paralelního RGB displeje, výstup HDMI (TFP410) a dotyk FT5X06.
image.draw_image()— přepsáno s plným řetězcem škálování/alfa/palety (x_scale/y_scale/hint/color_palette…).image.flush()plus konstanty formátu pixelů (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).Zásadní: byly odstraněny starší matematické pomocné knihovny a několik metod obrazu, byla přepracována API
draw_image()/ LCD ayuv_to_*již neodečítá 128 — viz zásadní změny.
Nové funkce#
audio— nový modulaudiopro Portenta H7 pro záznam z PDM mikrofonu:audio.init(), neblokujícíaudio.start_streaming(callback)aaudio.stop_streaming()(frekvence se zadává v Hz).micro_speech— nový modul s třídouMicroSpeech,audio_callback()amicro_speech()pro rozpoznávání řeči TensorFlow;listen()používá průměr v klouzavém okně a přijímá klíčové slovofilterpro omezení výsledků na seznam štítků.LCD — nový řadič LCD s podporou paralelního RGB displeje, typy
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, mnoha konstantami framesize,triple_buffer/framesize/refresh/bgr/deinit, rozšířenýmdisplay, výstupem HDMI přes TFP410 a podporou dotykové obrazovky FT5X06.image.flush()— přidána metodaimage.flush()a konstanty formátu pixelů (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).image.draw_image()— přepsáno s novým škálovacím řetězcem:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteahint, plus konstantyimage.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTa nové ukázky alfa prolínání / barevné tabulky / škálování.ImageReader.next_frame()získal klíčové slovopausepro vypnutí prodlevy přehrávání v reálném čase.Přidány ukázky zvuku pro Portenta (
audio_fft.py,micro_speech.py) a ukázka probuzení ze stavu stop pomocí ExtInt.
Další změny a vylepšení#
Vestavěné ukázky byly reorganizovány pod
scripts/examples/Arduino/; framebuffer se nyní aktualizuje okamžitě po načtení/vytvoření obrazů scopy_to_fb=True(není potřeba ruční flush); halda Portenta byla mírně zmenšena, aby se vešlo více statického stavu ovladačů.
Opravy chyb#
Kamera a zpracování obrazu:
Opraveno prohození červené/modré (pořadí bajtů RGB565) v zachycených obrazech, zaokrouhlování kreslení DMA2D pro shodu s ostatním kreslicím kódem, poškození
fb_allocpři rekurzivních alokacích (find_blobs()) a podmíněnotop_hat()/black_hat()tím, že jsou povoleny jak binární, tak matematické operace.
Displej a zvuk:
Opraven výstup LCD shieldu a 1kanálový mono zvukový režim Portenta.
Portenta:
Obejit problém s Ethernet/SDRAM (nastavení
rst_ethdo high) a opravena konfigurace časování SDRAM.
Hardware a podpora desek#
Arduino Portenta H7 — záznam zvuku z palubního PDM mikrofonu (SAI / PDM2PCM).
LCD — nový řadič paralelního RGB displeje (LTDC aktivováno v sestavení H7), výstup HDMI přes TFP410 a podpora LCD s dotykovou obrazovkou FT5X06.
Zásadní změny API#
Uživatelsky viditelné změny API mezi v3.6.9 a v3.7.0. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.
Každá změna je označena svým dopadem:
minor — úzké API; ovlivňuje pouze skripty, které jej používaly.
behavior — stejné API, jiné výsledky; překontrolujte vyladěné skripty.
Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete pouze přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.
Odstraněny starší matematické pomocné knihovny (minor)#
Pomocné knihovny mtx, rv, ulinalg, umatrix a vec byly odstraněny z scripts/libraries ve prospěch ulab. Skripty, které kteroukoli z nich importují, selžou a musí být přeneseny na ulab.
Commity: 1f7da9272
Odstraněny remove_shadows() / chrominvar() / illuminvar() (minor)#
image.remove_shadows(), image.chrominvar() a image.illuminvar() byly odstraněny bez náhrady. Skripty volající tyto metody musí volání odstranit.
Commity: 3173c2bb3
Přepracována signatura image.draw_image() (minor)#
image.draw_image() bylo přepsáno na novém škálovacím řetězci. Staré poziční argumenty alpha / jednoduchý scale a předchozí poziční pořadí již neplatí; použijte novou formu s klíčovými slovy (x_scale= / y_scale= nebo x_size= / y_size=, alpha=, color_palette=, hint= …).
Commity: 3439f8824
Přepsání modulu LCD (minor)#
Modul lcd byl přepsán pro nový řadič displeje. lcd.init() nyní přijímá type displeje (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) a nové klíčové argumenty a sada konstant / API byla podstatně reorganizována. Staré skripty určené pouze pro shield většinou stále fungují, ale výchozí hodnoty a chování se změnily — překontrolujte LCD skripty vůči novému API type / framesize.
Commity: 185538207
yuv_to_* již neodečítá 128 (behavior)#
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() nyní zacházejí s prvkem Y v n-tici jako s hodnotou bez znaménka 0–255 místo odečítání 128. Volající musí předat Y bez předchozího posunu −128, aby dostali stejné barvy jako dříve.
Commity: dcf141192
Kontrolní seznam migrace#
Pro čistý přechod na v3.7.0 je typická práce následující:
Přeneste použití
mtx/rv/ulinalg/umatrix/vecnaulab(odstranění matematických knihoven).Odstraňte volání
image.remove_shadows()/chrominvar()/illuminvar()(odstraněné metody obrazu).Aktualizujte volání
image.draw_image()na novou signaturu s klíčovými slovy (přepracování draw_image).Překontrolujte LCD skripty vůči novému API
lcdtype/framesize(přepsání LCD).Vynechte posun −128 při předávání Y do
yuv_to_*(změna yuv_to_*).
Všechny ostatní skripty poběží beze změny.