v3.7.0¶
v3.7.0 är en stor utgåva. Den lägger till audio-modulen (PDM-mikrofon på Portenta H7) med ett nytt icke-blockerande API baserat på återanrop, TensorFlow-modulen micro_speech för taligenkänning, en helt ny LCD-styrenhet för parallell RGB (med HDMI-utgång och FT5X06-pekskärm), en image.flush()-metod med konstanter för pixelformat, samt en omskriven skalningspipeline för image.draw_image(). Flera äldre hjälpbibliotek och bildmetoder togs bort och matematiken i yuv_to_* ändrades — läs de brytande ändringarna nedan.
Höjdpunkter¶
audio-modulen — infångning från den inbyggda PDM-mikrofonen på Portenta H7 med ett icke-blockerandestart_streaming(callback)-API.micro_speech— en TensorFlow-modul för micro-speech-igenkänning.Ny LCD-styrenhet — stöd för parallell RGB-skärm, HDMI-utgång (TFP410) och FT5X06-pekskärm.
image.draw_image()— omskriven med en fullständig pipeline för skalning/alfa/palett (x_scale/y_scale/hint/color_palette…).image.flush()plus konstanter för pixelformat (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).Brytande: äldre matematiska hjälpbibliotek och flera bildmetoder togs bort,
draw_image()/ LCD-API:er omarbetades, ochyuv_to_*subtraherar inte längre 128 — se de brytande ändringarna.
Nya funktioner¶
audio— en nyaudio-modul för Portenta H7 för infångning från PDM-mikrofon:audio.init(), icke-blockerandeaudio.start_streaming(callback)ochaudio.stop_streaming()(frekvensen anges i Hz).micro_speech— en ny modul med enMicroSpeech-klass,audio_callback()ochmicro_speech()för TensorFlow-taligenkänning;listen()använder ett glidande fönstermedelvärde och tar emot ettfilter-nyckelord för att begränsa resultaten till en etikettlista.LCD — en ny LCD-styrenhet med stöd för parallell RGB-skärm, typerna
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, många framesize-konstanter,triple_buffer/framesize/refresh/bgr/deinit, en utökaddisplay, HDMI-utgång via TFP410, och stöd för FT5X06-pekskärm.image.flush()— lade till enimage.flush()-metod och konstanter för pixelformat (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).image.draw_image()— omskriven med en ny skalningspipeline:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteochhint, plus konstanternaimage.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTsamt nya exempel på alfablandning / färgtabell / skalning.ImageReader.next_frame()fick ettpause-nyckelord för att inaktivera fördröjningen vid realtidsuppspelning.Lade till ljudexempel för Portenta (
audio_fft.py,micro_speech.py) och ett ExtInt-exempel för väckning från stoppläge.
Övriga ändringar och förbättringar¶
De inbyggda exemplen omorganiserades under
scripts/examples/Arduino/; bildbufferten uppdateras nu omedelbart efter inläsning/skapande av bilder medcopy_to_fb=True(ingen manuell flush behövs); Portentas heap minskades något för att rymma mer statiskt drivrutinstillstånd.
Felrättningar¶
Kamera och bildbehandling:
Åtgärdade förväxlade röd/blå-kanaler (RGB565-byteordning) i infångade bilder, DMA2D-ritningsavrundning så att den matchar annan ritkod,
fb_alloc-korruption vid rekursiva allokeringar (find_blobs()), och spärradetop_hat()/black_hat()bakom att både binära och matematiska operationer är aktiverade.
Skärm och ljud:
Åtgärdade LCD-sköldens utgång och Portentas 1-kanaliga mono-ljudläge.
Portenta:
Kringgick ett Ethernet/SDRAM-problem (drev
rst_ethhögt) och åtgärdade SDRAM-tidskonfigurationen.
Maskinvara och kortstöd¶
Arduino Portenta H7 — ljudinfångning från inbyggd PDM-mikrofon (SAI / PDM2PCM).
LCD — ny styrenhet för parallell RGB-skärm (LTDC aktiverat i H7-bygget), HDMI-utgång via TFP410 och stöd för FT5X06-pekskärms-LCD.
API-brytande ändringar¶
Användarsynliga API-brytningar mellan v3.6.9 och v3.7.0. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Varje ändring är märkt med sin påverkan:
minor — smalt API; påverkar bara skript som använde det.
behavior — samma API, andra resultat; kontrollera finjusterade skript igen.
Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
Äldre matematiska hjälpbibliotek borttagna (minor)¶
Hjälpbiblioteken mtx, rv, ulinalg, umatrix och vec togs bort från scripts/libraries till förmån för ulab. Skript som import:erar något av dessa kommer att misslyckas och måste portas till ulab.
Commits: 1f7da9272
remove_shadows() / chrominvar() / illuminvar() borttagna (minor)¶
image.remove_shadows(), image.chrominvar() och image.illuminvar() togs bort utan ersättning. Skript som anropar dessa metoder måste ta bort anropen.
Commits: 3173c2bb3
image.draw_image()-signaturen omarbetad (minor)¶
image.draw_image() skrevs om ovanpå en ny skalningspipeline. De gamla positionsargumenten alpha / enkla scale och den tidigare positionsordningen gäller inte längre; använd den nya nyckelordsformen (x_scale= / y_scale= eller x_size= / y_size=, alpha=, color_palette=, hint= …).
Commits: 3439f8824
Omskrivning av LCD-modulen (minor)¶
lcd-modulen skrevs om för den nya skärmstyrenheten. lcd.init() tar nu en skärmtype (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) och nya nyckelordsargument, och konstant-/API-ytan omorganiserades avsevärt. Gamla sköld-only-skript fungerar mestadels fortfarande, men standardvärdena och beteendet ändrades — granska LCD-skript mot det nya type / framesize-API:et.
Commits: 185538207
yuv_to_* subtraherar inte längre 128 (behavior)¶
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() behandlar nu Y-tupelelementet som ett heltal utan tecken i intervallet 0–255 i stället för att subtrahera 128. Anropare måste skicka Y utan den tidigare −128-förskjutningen för att få samma färger som tidigare.
Commits: dcf141192
Checklista för migrering¶
För en ren portning till v3.7.0 är det typiska arbetet:
Porta användning av
mtx/rv/ulinalg/umatrix/vectillulab(borttagningen av matematikbiblioteken).Ta bort anrop till
image.remove_shadows()/chrominvar()/illuminvar()(de borttagna bildmetoderna).Uppdatera anrop till
image.draw_image()till den nya nyckelordssignaturen (omarbetningen av draw_image).Granska LCD-skript mot det nya
lcdtype/framesize-API:et (omskrivningen av LCD).Ta bort −128-förskjutningen när Y skickas till
yuv_to_*(yuv_to_*-ändringen).
Alla andra skript körs oförändrade.