v3.6.1¶
v3.6.1 è una versione importante. Introduce il modulo imu (LSM6DS3), una serie di nuove API getter per sensor con rotazione automatica guidata dall’IMU, la correzione prospettica a 4 punti rotation_corr() e avvia l”Arduino Portenta H7 con le camere HIMAX HM01B0 e OV7690. Diverse API di sensor / image sono cambiate e TensorFlow è stato rimosso sull’M7 — leggi le modifiche incompatibili più sotto.
In evidenza¶
imu— accelerometro / giroscopio / temperatura / roll / pitch sull’LSM6DS3 (OpenMV 4 / Portenta).Getter del sensore + rotazione automatica —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation()e rotazione degli snapshot guidata dall’IMU.Correzione prospettica —
rotation_corr()acquisisce le keywordfovecorners(4 punti).Nuovo hardware — Arduino Portenta H7, HIMAX HM01B0 e camera OV7690.
Incompatibile:
set_pixformat()/set_framesize()ora restituisconoNone,sensor.set_framerate()è stata rimossa, TensorFlow è stato rimosso sull’M7 elens_corr()/linpolar()ora richiedono dimensioni pari — vedi le modifiche incompatibili.
Nuove funzionalità¶
imu— un nuovo modulo IMU:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch()eimu.sleep()(LSM6DS3 su OpenMV 4 / Portenta).Getter del sensore — aggiunte
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose()eset_auto_rotation()/get_auto_rotation().Rotazione automatica —
sensor.snapshot()usa l’IMU per ribaltare / specchiare / trasporre i frame quando la rotazione automatica è abilitata.rotation_corr()— aggiunte le keywordfovecorners(prospettiva a 4 punti), con esempi di correzione prospettica.lcd.init()— aggiunto l’argomento keywordbgr.collections.deque— abilitata nella build di MicroPython.Aggiunte le costanti id
sensor.OV7690esensor.HM01B0e un esempio di filtro immagine in stile numpy conulab.
Altre modifiche e miglioramenti¶
Ottimizzati in modo significativo i filtri immagine (mediana / moda / media / …),
find_circles()e la correzione della lente;alloc_extra_fbpuò ora allocare un numero qualsiasi di byte; il modello di rilevamento persone è stato ricostruito con una nuova operazione di average-pool.
Correzioni di bug¶
Camera e sensori:
Corretti il
sleep()dell’OV2640 (ora usa il registro standby COM2 invece del pin di power-down), la configurazione del pin FSYNC, le polarità HSYNC/VSYNC e l’indirizzo/scansione I2C dell’HM01B0, la GPIO di power-down del sensore e il pin di reset della camera sul Portenta, e disabilitata la rotazione automatica quando il pitch dell’IMU è vicino a 90°/270°.
Imaging e sistema:
Corretti un bug di controllo dei limiti in un filtro immagine, un hardfault durante la disabilitazione della D-cache, l’avvio su schede senza scheda SD, un bug
load_to_fbditf.load(), lo stack overflow del rilevamento persone (stack H7 portato a ≥12 KB) e gli offset dei descrittori USB per la modalità high-speed sull’OpenMV 4 Plus.
Hardware e supporto schede¶
Arduino Portenta H7 — avvio iniziale della scheda (configurazione clock/OSC/HSE dell’STM32H747, header CMSIS, ADC, SDRAM, PID USB Arduino).
HIMAX HM01B0 — nuovo driver per camera monocromatica (Bayer, clock con oscillatore esterno).
OV7690 — nuovo driver per camera.
IMU LSM6DS3 — OpenMV 4 / Portenta.
Modifiche incompatibili delle API¶
Modifiche incompatibili visibili all’utente tra la v3.6.0 e la v3.6.1. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata dal suo impatto:
minor — API ristretta; interessa solo gli script che la usavano.
behavior — stessa API, risultati diversi; ricontrolla gli script messi a punto.
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.
sensor.set_framerate() rimossa (minor)¶
Lo stub no-op sensor.set_framerate() è stato rimosso; chiamarlo ora solleva AttributeError. Rimuovi la chiamata e controlla la temporizzazione dei frame tramite framesize/esposizione. (Una set_framerate() funzionante è reintrodotta nella v4.0.2.)
Commit: 705e98f91
TensorFlow rimosso sull’OpenMV Cam M7 (minor)¶
TensorFlow (il modulo tf) è stato disabilitato sull’OpenMV Cam M7 / OpenMV 3 (non ci sta più). import tf sull’M7 fallisce — usa una camera di classe H7 per TensorFlow. (tf è riabilitato sull’F7 nella v3.6.3.)
Commit: 2ae875077
set_pixformat() / set_framesize() restituiscono None (behavior)¶
sensor.set_pixformat() e sensor.set_framesize() ora restituiscono None invece di True e un formato pixel non supportato ora solleva un ValueError invece di un’asserzione. Il codice che controllava il valore di ritorno (ad es. if sensor.set_pixformat(...):) deve smettere di farlo, e il codice che catturava AssertionError per i formati non supportati deve catturare ValueError.
Commit: f314ac4e7
lens_corr() / linpolar() / logpolar() richiedono dimensioni pari (behavior)¶
image.lens_corr() e image.linpolar() / image.logpolar() ora richiedono larghezza e altezza pari dell’immagine e sollevano un errore con dimensioni dispari. Ritaglia o ridimensiona l’immagine a dimensioni pari prima di chiamare questi metodi.
Checklist di migrazione¶
Per un porting pulito alla v3.6.1 il lavoro tipico è:
Rimuovi le chiamate a
sensor.set_framerate()(la rimozione di set_framerate).Sposta i carichi di lavoro TensorFlow fuori dall’OpenMV Cam M7 (la modifica a TensorFlow sull’M7).
Smetti di affidarti al valore di ritorno di
set_pixformat()/set_framesize()e catturaValueErrorper i formati pixel non supportati (la modifica al valore di ritorno).Garantisci dimensioni dell’immagine pari prima di
lens_corr()/linpolar()/logpolar()(il requisito delle dimensioni pari).
Tutti gli altri script funzionano senza modifiche.