v3.7.0¶
v3.7.0 è una grande release. Aggiunge il modulo audio (microfono PDM del Portenta H7) con una nuova API a callback non bloccante, il modulo di riconoscimento vocale TensorFlow micro_speech, un controller LCD RGB parallelo completamente nuovo (con uscita HDMI e touch FT5X06), un metodo image.flush() con costanti di formato pixel e una pipeline di scaling di image.draw_image() riscritta. Diverse librerie di supporto legacy e metodi di immagine sono stati rimossi e la matematica di yuv_to_* è cambiata — leggi le modifiche incompatibili qui sotto.
In evidenza¶
Modulo
audio— acquisizione dal microfono PDM integrato del Portenta H7 con un’APIstart_streaming(callback)non bloccante.micro_speech— un modulo di riconoscimento vocale micro-speech TensorFlow.Nuovo controller LCD — supporto per display RGB parallelo, uscita HDMI (TFP410) e touch FT5X06.
image.draw_image()— riscritto con una pipeline completa di scaling/alpha/palette (x_scale/y_scale/hint/color_palette…).image.flush()più costanti di formato pixel (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).Incompatibile: sono state rimosse le librerie di supporto matematico legacy e diversi metodi di immagine, le API
draw_image()/ LCD sono state rielaborate eyuv_to_*non sottrae più 128 — vedi le modifiche incompatibili.
Nuove funzionalità¶
audio— un nuovo moduloaudioper il Portenta H7 per l’acquisizione dal microfono PDM:audio.init(),audio.start_streaming(callback)non bloccante eaudio.stop_streaming()(la frequenza è specificata in Hz).micro_speech— un nuovo modulo con una classeMicroSpeech,audio_callback()emicro_speech()per il riconoscimento vocale TensorFlow;listen()usa una media a finestra mobile e accetta una parola chiavefilterper limitare i risultati a un elenco di etichette.LCD — un nuovo controller LCD con supporto per display RGB parallelo, tipi
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, molte costanti di framesize,triple_buffer/framesize/refresh/bgr/deinit, undisplayampliato, uscita HDMI tramite il TFP410 e supporto per touch-screen FT5X06.image.flush()— aggiunto un metodoimage.flush()e costanti di formato pixel (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).image.draw_image()— riscritto con una nuova pipeline di scaling:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteehint, più le costantiimage.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTe nuovi esempi di alpha-blending / tabella colori / scaling.ImageReader.next_frame()ha guadagnato una parola chiavepauseper disabilitare il ritardo di riproduzione in tempo reale.Aggiunti esempi audio per il Portenta (
audio_fft.py,micro_speech.py) e un esempio di risveglio dallo stop tramite ExtInt.
Altre modifiche e miglioramenti¶
Gli esempi integrati sono stati riorganizzati sotto
scripts/examples/Arduino/; il framebuffer ora si aggiorna istantaneamente dopo il caricamento/creazione di immagini concopy_to_fb=True(non serve un flush manuale); l’heap del Portenta è stato ridotto leggermente per contenere più stato statico dei driver.
Correzioni di bug¶
Camera e imaging:
Corretto lo scambio di rosso/blu (ordine dei byte RGB565) nelle immagini acquisite, l’arrotondamento del disegno DMA2D per allinearlo al resto del codice di disegno, la corruzione di
fb_allocnelle allocazioni ricorsive (find_blobs()) e abilitatitop_hat()/black_hat()solo quando sono attive sia le operazioni binarie sia quelle matematiche.
Display e audio:
Corrette l’uscita dello shield LCD e la modalità audio mono a 1 canale del Portenta.
Portenta:
Aggirato un problema Ethernet/SDRAM (portando
rst_ethalto) e corretta la configurazione di timing della SDRAM.
Hardware e supporto schede¶
Arduino Portenta H7 — acquisizione audio dal microfono PDM integrato (SAI / PDM2PCM).
LCD — nuovo controller per display RGB parallelo (LTDC abilitato nella build H7), uscita HDMI tramite il TFP410 e supporto LCD touch-screen FT5X06.
Modifiche incompatibili delle API¶
Modifiche delle API visibili all’utente tra la v3.6.9 e la v3.7.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata con il suo impatto:
minore — API ristretta; riguarda solo gli script che la usavano.
comportamento — stessa API, risultati diversi; ricontrolla gli script ottimizzati.
Le modifiche sono raggruppate per impatto in quest’ordine. Se vuoi solo portare il tuo codice, salta alla checklist di migrazione alla fine. Ogni hash di commit rimanda al relativo diff su GitHub.
Librerie di supporto matematico legacy rimosse (minore)¶
Le librerie di supporto mtx, rv, ulinalg, umatrix e vec sono state rimosse da scripts/libraries in favore di ulab. Gli script che fanno import di una qualunque di queste falliranno e devono essere portati a ulab.
Commit: 1f7da9272
remove_shadows() / chrominvar() / illuminvar() rimossi (minore)¶
image.remove_shadows(), image.chrominvar() e image.illuminvar() sono stati eliminati senza sostituzione. Gli script che chiamano questi metodi devono rimuovere le chiamate.
Commit: 3173c2bb3
Firma di image.draw_image() rielaborata (minore)¶
image.draw_image() è stato riscritto su una nuova pipeline di scaling. I vecchi argomenti posizionali alpha / scale singolo e il precedente ordinamento posizionale non si applicano più; usa la nuova forma a parole chiave (x_scale= / y_scale= oppure x_size= / y_size=, alpha=, color_palette=, hint= …).
Commit: 3439f8824
Riscrittura del modulo LCD (minore)¶
Il modulo lcd è stato riscritto per il nuovo controller di display. lcd.init() ora accetta un type di display (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) e nuovi argomenti a parole chiave, e la superficie di costanti / API è stata riorganizzata in modo sostanziale. I vecchi script solo-shield per lo più funzionano ancora, ma i valori predefiniti e il comportamento sono cambiati — rivedi gli script LCD rispetto alla nuova API type / framesize.
Commit: 185538207
yuv_to_* non sottrae più 128 (comportamento)¶
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() ora trattano l’elemento Y della tupla come un valore senza segno 0–255 invece di sottrarre 128. I chiamanti devono passare Y senza il precedente bias di −128 per ottenere gli stessi colori di prima.
Commit: dcf141192
Checklist di migrazione¶
Per un porting pulito alla v3.7.0 il lavoro tipico è:
Porta l’uso di
mtx/rv/ulinalg/umatrix/vecaulab(la rimozione delle librerie matematiche).Rimuovi le chiamate
image.remove_shadows()/chrominvar()/illuminvar()(i metodi di immagine rimossi).Aggiorna le chiamate
image.draw_image()alla nuova firma a parole chiave (la rielaborazione di draw_image).Rivedi gli script LCD rispetto alla nuova API
type/framesizedilcd(la riscrittura dell’LCD).Elimina il bias di −128 quando passi Y a
yuv_to_*(la modifica di yuv_to_*).
Tutti gli altri script funzionano senza variazioni.