v4.5.3¶
La v4.5.3 è una release di ampia portata: autofocus per OV5640, disegno di linee con anti-aliasing, un decodificatore JPEG hardware integrato nel mainline, importanti miglioramenti per i.MX RT (RT1060) e un’ampia serie di correzioni per camera/ISP. Alcuni metodi immagine raramente usati sono stati rimossi e alcune API ISP/display sono cambiate — leggi le modifiche incompatibili qui sotto.
In evidenza¶
Autofocus OV5640 — abilitato su OpenMV 4 / 4 Plus / RT1060 (
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), con un esempio.draw_line()con anti-aliasing e un decodificatore JPEG hardware STM32 integrato nel mainline (decompressione JPEG più veloce).OpenMV RT1060 ha ottenuto ulab, le operazioni ISP,
set_framerate()/set_frame_callback(), un frame buffer molto più grande e il driver CAN.Modifica incompatibile:
Image.div()/cartoon()/mul()sono stati rimossi e alcune API ISP/display sono cambiate — vedi le modifiche incompatibili.
Nuove funzionalità¶
Autofocus OV5640 — il firmware di autofocus è abilitato su OPENMV4, OPENMV4P e OPENMV RT1060; attivalo con
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). È stato aggiunto un nuovo esempio07-Sensor-Control/autofocus.py.Disegno di linee con anti-aliasing —
draw_line()ha ottenuto l’anti-aliasing.Controller di display SPI personalizzati —
SPIDisplayora accetta una parola chiavecontroller=ed espone un hookbus_writeper sequenze di init/comando personalizzate.Aggiornamento di
Image.ccm()— ora accetta matrici annidate 3x3 / 4x3 / 3x4 / 4x4 e array ulab (con una riga di offset opzionale per canale); aggiunto un esempio di correzione del colore.Acquisizione JPEG i.MX RT — acquisizione
sensor.JPEGsu Arduino Portenta/Nicla Vision/Giga, oltre aset_framerate()eset_frame_callback()sul port mimxrt.Validazione dei modelli TFLite — i modelli ora contengono un hash dell’ordine degli operatori e la dimensione del set di operatori.
WiFi — aggiunte le costanti di modalità di sicurezza CYW43; nuovi script di esempio per il controllo della scheda i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).
Altre modifiche e miglioramenti¶
MicroPython aggiornato alla 1.22; CMSIS aggiornato alla 5.9.0.
Decodificatore JPEG hardware STM32 integrato nel mainline — decompressione JPEG più veloce sul codec on-chip.
Ottimizzati
Image.invert()/negate()e le operazioni immagine binarie/matematiche (intrinseche CMSIS).Le librerie
rpcevl53l1xsono state rese portabili (usanomachine/timeinvece dipyb), così funzionano su port non STM32.Memcpy del frame buffer accelerato via DMA su OpenMV H7 / H7 Plus / Pro / Pure Thermal e Arduino Giga / Nicla Vision / Portenta H7; STM32 ora scansiona i dispositivi I2C una sola volta per scansione per un avvio più veloce.
Correzioni di bug¶
Camera e sensori:
Corretto il clock XCLK della camera STM32 a un duty cycle reale del 50% e un bug quando la frequenza di clock della camera è impostata a zero; corretti il crop+transpose Bayer, lo shift di colore YUV422 e
set_windowing()sul port mimxrt.Corretti il probe del chip-ID GC2145 e hmirror/vflip su montaggi ruotati; corretti il PAJ6100 sul RT1062 e un overflow del buffer SPI PixArt PAJ7620/PAW3902.
Elaborazione delle immagini:
Corretti il clipping della roi di
find_rects(), il troncamento dell’offset frazionario dimorph(), i valori predefiniti di contrasto/luminosità diimage.gamma(), gli offset A/B diget_threshold()su RGB565 e la decodifica JPEG di dimensioni non multiple di 8.
Sistema e librerie:
machine.LED.value()senza argomenti ora restituisce lo stato del LED invece di azzerarlo; corretti il deinit del SSEL SPI su un bus condiviso,machine.deepsleep()sul RT1062, un crash TF in caso di operatori mancanti e l’auto-attivazione della NIC WINC1500/ninaw10 suconnect().
Hardware e supporto schede¶
OpenMV RT1060 — abilitati ulab e le operazioni ISP, frame buffer più grande (10M→20M) / fb_alloc (2M→11M), driver CAN ripristinato, più heap.
Arduino GIGA — supporto della camera GC2145, con rilevamento automatico GC2145/OV5640 (condividono un indirizzo I2C).
i.MX RT — supporto dell’acquisizione
sensor.JPEG.
Modifiche incompatibili dell’API¶
Interruzioni dell’API visibili all’utente tra la v4.5.2 e la v4.5.3. Ambito: i C-module Python in modules/ e le librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata con il suo impatto:
minore — API ristretta; interessa 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 suo diff su GitHub.
Metodi immagine rimossi (minore)¶
Image.div(), Image.cartoon() (e il suo esempio) e Image.mul() sono stati rimossi.
API del modulo display (minore)¶
Il fallback legacy del nome di modulo udisplay è stato rimosso — il modulo è registrato solo come display. I metodi dsi_write() / dsi_read() riservati al DSI sono stati sostituiti da bus_write() / bus_read(), che ora sono disponibili su tutti i controller di display.
Modifiche all’API di MQTT e tf.regression (minore)¶
Il MQTTClient della libreria mqtt è stato rielaborato: port è ora obbligatorio, sono state aggiunte le nuove parole chiave del costruttore ssl_params / callback e un argomento timeout su connect(), i vecchi valori predefiniti ssl= / port=0 sono stati rimossi e check_msg() è ora non bloccante. tf.regression() è stato riscritto — la sua firma è ora regression(model, array) e gestisce modelli 1D/2D/3D e quantizzati (int8).
Modifiche al comportamento di ISP / sensore (comportamento)¶
Image.awb() è stato rielaborato — gray-world (predefinito) vs white-patch (max=True) è ora esplicito, e l’argomento max più gli argomenti gamma / contrast / brightness di Image.gamma() sono ora solo per parola chiave (le chiamate posizionali devono essere aggiornate). La trasposizione dell’immagine è ora disabilitata per YUV422 (in precedenza produceva un output errato) e lo shift di colore YUV422 è stato corretto per corrispondere a Bayer. Il percorso JPEG STM32 ora solleva un errore in caso di mancata corrispondenza della geometria JPEG invece di produrre un’immagine corrotta, e la modalità AP WiFi ora applica una modalità di sicurezza predefinita sui port STM32 e i.MX RT.
Commit: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af
Checklist di migrazione¶
Per un porting pulito alla v4.5.3 il lavoro tipico è:
Smetti di usare
Image.div()/cartoon()/mul()(i metodi rimossi).Importa il modulo display come
displaye passa dadsi_write/dsi_readabus_write/bus_read(la modifica dell’API del display).Aggiorna la costruzione di
MQTTClient(portè obbligatorio;ssl_params/callback) e tutte le chiamatetf.regression()(le modifiche dell’API delle librerie).Passa
maxdiawb()egamma/contrast/brightnessdigamma()come argomenti per parola chiave, e ricontrolla le assunzioni su YUV422/trasposizione e sulla sicurezza in modalità AP (le modifiche a ISP/sensore).