v2.7.0¶
La v2.7.0 modernizza l’API del sensor per guadagno automatico / esposizione automatica / bilanciamento del bianco passando a unità fisiche (dB / microsecondi), revisiona la correlazione di fase find_displacement() (aggiungendo rotazione/scala) e aggiunge get_similarity() (SSIM), chrominvar() / illuminvar(), framebuffer aggiuntivi e una libreria MQTT. È una grande release con incompatibilità — leggi le modifiche incompatibili qui sotto.
In evidenza¶
API sensore moderna —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()ora usano dB / microsecondi, con i corrispondentiget_gain_db()/get_exposure_us()/get_rgb_gain_db().Correlazione di fase —
find_displacement()rielaborata con rotazione / scala efind_rotscale()/linpolar()/logpolar().SSIM — similarità strutturale
image.get_similarity().Framebuffer aggiuntivi —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — una nuova libreria MQTT.
Incompatibilità: l’API del sensore per guadagno/esposizione/bilanciamento del bianco, i framesize di
find_displacement()/ FFT,find_number(), gli strumenti del firmware WINC ez_rotation()di AprilTag sono tutti cambiati — vedi le modifiche incompatibili.
Nuove funzionalità¶
Sensore — aggiunti
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), un argomentogain_db_ceilingsuset_auto_gain(), il supportohmirror/vflipper l’MT9V034 esensor.alloc_extra_fb()/sensor.dealloc_extra_fb()per framebuffer aggiuntivi in RAM.Immagine — aggiunti
remove_shadows(),min()/max()(differenza tra frame),get_similarity()(SSIM) con un esempio di similarità strutturale,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), gli argomenti threshold / offset / invert sui filtri adattivimean()/mode()/median()/midpoint(),len()/ l’indicizzazione sull’oggetto keypoints e un accessor.match()sull’oggetto di corrispondenza keypoint.Librerie / rete — aggiunta una libreria MQTT (con un esempio MQTT su WiFi) e una modalità
network.WINC.MODE_BSPper programmare il firmware WINC tramite la UART di debug.Esempi — aggiunti gli script a basso consumo
deep_sleep.py/stop_mode.py, flusso ottico avanzato ed esempi lineari/log-polari; il firmware ora analizzauart.iniall’avvio per abilitare una UART REPL.
Altre modifiche e miglioramenti¶
get_regression()ha guadagnato gli argomentiarea_threshold/pixels_thresholde una regressione robusta più veloce (per line-following / racing);get_pixel()ora supporta le immagini Bayer; aggiunte le fondamenta per STM32H7 (header CMSIS / HAL / bootloader — la scheda H7 non è ancora utilizzabile); aggiornato il firmware WINC1500 incluso (19.4.4 / 19.5.2).
Correzioni di bug¶
Imaging:
Corretti il bug di accesso fuori dai limiti nella ricerca a diamante di
find_template(), la corruzione dilogpolar/linpolareilluminvar()che impazziva su valori di colore prossimi allo zero.
Sensore e sistema:
Corretti i bug del controllo automatico del guadagno, ripristinata la dimensione di
MAIN_FBsusnapshot()(così checopy_to_fba una risoluzione diversa, il ridimensionamento del FB e il pooling del flusso ottico funzionino di nuovo), il timeout digethostbynamedel WINC, il clear-status dipydfusul bootloader H7 e le modalità a basso consumo stop/standby.
Hardware e supporto schede¶
STM32H7 — fondamenta (CMSIS / HAL / bootloader); la scheda OpenMV H7 non è ancora utilizzabile in questa release.
WINC1500 — firmware incluso aggiornato.
Modifiche incompatibili dell’API¶
Rotture dell’API visibili all’utente tra la v2.6.0 e la v2.7.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata dal suo impatto:
major — riguarda la maggior parte degli script che usavano la funzionalità; dovrai adattare il codice.
minor — API ristretta; riguarda solo gli script che la usavano.
behavior — stessa API, risultati diversi; ricontrolla gli script messi a punto.
Le modifiche sono raggruppate per impatto in quell’ordine. Se vuoi solo adattare il tuo codice, salta alla checklist di migrazione in fondo. Ogni hash di commit rimanda al suo diff su GitHub.
sensor.set_auto_gain() rielaborata in dB (major)¶
sensor.set_auto_gain() non accetta più l’argomento intero value= e non restituisce più True / False. Usa sensor.set_auto_gain(False, gain_db=...) (un valore float in dB), rileggilo con il nuovo sensor.get_gain_db() e racchiudi la chiamata in try / except poiché ora il fallimento solleva ValueError.
Commit: b906c5f19
sensor.set_auto_exposure() rielaborata in microsecondi (major)¶
sensor.set_auto_exposure() non accetta più l’argomento intero value= e non restituisce più True / False. Usa sensor.set_auto_exposure(False, exposure_us=...), rileggilo con il nuovo sensor.get_exposure_us() e gestisci il ValueError sollevato in caso di fallimento.
Commit: 7be0a7a18
find_displacement() / framesize FFT revisionati (major)¶
La correlazione di fase è stata revisionata. image.find_displacement() ora restituisce un oggetto di spostamento (con x_translation() / y_translation() — prima x_offset / y_offset — più rotation() / scale() e i nuovi argomenti logpolar / fix_rotation_scale); il separato oggetto rot-scale è stato rimosso ed è stato aggiunto find_rotscale(). Le costanti framesize FFT sono state rinominate/rimosse: sensor.B40x30 è stata rimossa del tutto, e sensor.B64x32 / B64x64 sono state rinominate in maiuscolo sensor.B64X32 / B64X64 (con le nuove B128X64 / B128X128).
sensor.set_auto_whitebal() rielaborata in dB (minor)¶
sensor.set_auto_whitebal() ha sostituito il suo argomento intero value=[r, g, b] con rgb_gain_db=[r, g, b] (float in dB) e ora restituisce None (sollevando ValueError in caso di fallimento) invece di True / False. Usa il nuovo sensor.get_rgb_gain_db() per rileggere i guadagni.
Commit: 30ecbdc4f
set_hmirror() / set_vflip() restituiscono None (minor)¶
sensor.set_hmirror() e sensor.set_vflip() ora restituiscono None e sollevano ValueError in caso di fallimento invece di restituire uno stato True / False. Rimuovi qualsiasi codice che si dirama in base al loro valore di ritorno.
Commit: aeb023804
Gli strumenti del firmware WINC richiedono un percorso di file (minor)¶
Gli strumenti per il firmware di network.WINC sono cambiati: wlan.fw_dump() / wlan.fw_update() ora richiedono un argomento obbligatorio con il percorso del file firmware e il WINC viene aperto in una modalità di programmazione (network.WINC(mode=...)). Aggiorna le chiamate senza argomenti per passare un percorso (es. wlan.fw_update("/winc_19_5_2.bin")).
Commit: fcc3b0b9c
image.find_number() richiede una ROI 28x28 (behavior)¶
image.find_number() (LeNet) ora richiede una ROI esattamente di 28x28 che rientri nell’immagine e altrimenti solleva un errore (invece di operare su una ROI arbitraria/sull’intera immagine). Passa una roi=(x, y, 28, 28) esplicita.
Commit: 4d09a13f3
Il segno di z_rotation() di AprilTag è invertito (behavior)¶
La z_rotation() di AprilTag (e la relativa rotation()) ora usa una convenzione di coordinate destrorsa, quindi l’angolo restituito è negato rispetto alle release precedenti. Gli script che dipendono dal vecchio segno devono invertire il valore o adeguare i loro calcoli sull’angolo.
Commit: 7673aaf74
Checklist di migrazione¶
Per un porting pulito alla v2.7.0 il lavoro tipico è:
Adattare
set_auto_gain()again_db=+get_gain_db()e gestireValueError(la rielaborazione del guadagno automatico).Adattare
set_auto_exposure()aexposure_us=+get_exposure_us()(la rielaborazione dell’esposizione automatica).Aggiornare
find_displacement()all’oggetto di spostamento e rinominare le costanti framesize FFT (la revisione di find_displacement).Adattare
set_auto_whitebal()argb_gain_db=+get_rgb_gain_db()(la rielaborazione del bilanciamento del bianco) e smettere di controllare il ritorno diset_hmirror()/set_vflip()(la modifica di mirror/flip).Passare un percorso del firmware agli strumenti WINC
fw_*(la modifica degli strumenti WINC).Passare una
roi28x28 afind_number()(la modifica di find_number) e adeguare i calcoli sull’angolo di AprilTag per il segno invertito diz_rotation()(la modifica di z_rotation).
Tutti gli altri script funzionano senza modifiche.