v2.8.0¶
La v2.8.0 è una release enorme. Mette in funzione l”OpenMV Cam H7 (STM32H7) con un encoder JPEG hardware e ADC/DAC dell’H7, una grande revisione dell’API image (spessore/riempimenti dei disegni, operazioni matematiche/binarie, molti nuovi filtri, sogliatura di Otsu), il threading di MicroPython e il modulo di versione omv. L’ordine di parsing degli argomenti Python è stato bloccato e image.mask_ellipse() è stata rimossa — leggi le modifiche incompatibili qui sotto.
In evidenza¶
OpenMV Cam H7 — nuova scheda STM32H7 con un encoder JPEG hardware e ADC / DAC dell’H7.
revisione di
image— spessore delle linee, riempimenti delle forme,draw_arrow()/draw_image(), operazioni matematiche/binarie complete e molti nuovi filtri.Sogliatura di Otsu —
histogram.get_threshold()e un oggettoThreshold.Threading — supporto a
_threaddi MicroPython.modulo
omv— informazioni su versione / scheda.Incompatibilità: l’ordine degli argomenti posizionali Python ora è rigido e
image.mask_ellipse()è stata rimossa — vedi le modifiche incompatibili.
Nuove funzionalità¶
OpenMV Cam H7 — supporto alla scheda STM32H7 con un encoder JPEG hardware, ADC dell’H7 e DAC dell’H7.
Disegno — aggiunti lo
thicknessdelle linee, ilfilldelle forme (rettangolo / cerchio), loscale/ kerning del testo, un argomentomono_spacesudraw_string(),image.draw_arrow()eimage.draw_image()(disegno di sprite / maschere).Operazioni matematiche — aggiunte
add(),sub(),mul(),div(),min(),max(),difference(),blend(),replace()(conhmirror/vflip/mask) eremove_shadows(); le operazioni di base ora accettano un valore scalare/colore applicato a tutti i pixel.Binario / morfologia — un nuovo tipo di immagine binaria e
binary(); le operazioni sulle linee ederode()/dilate()accettano maschere; aggiunteopen()/close()/top_hat()/black_hat().Filtri — aggiunti
cartoon,flood_fill,bilateral,laplacian, gli aliasblur/gaussian_blure l’equalizzazione adattiva dell’istogramma (histeq(adaptive=, clip_limit=, mask=)).Statistiche —
get_statistics()/get_histogram()accettano una lista di soglie di colore einvert; aggiunte lahistogram.get_threshold()di Otsu e un oggettoThreshold.CMSIS CNN — aggiunta
image.classify_object()con un esempiocnn.py(sostituita dal modulonnnella v3.0.0).Threading — abilitato il modulo
_threaddi MicroPython.modulo
omv— aggiunte le informazioni di versione (version_string,arch,board_type,board_id); abilitati il bus I2C4 dimachinee le funzioni matematiche speciali (erf,gamma, …); aggiunti esempi di motor-shield e molti nuovi script di esempio.
Altre modifiche e miglioramenti¶
Il clock esterno del sensore dell’H7 è stato abbassato a 48 MHz (migliore qualità dell’immagine, FPS più bassi); la qualità JPEG bassa/alta ora è configurabile per scheda (e ottimizzata per l’H7); aggiunto il gating delle funzionalità tramite
imlib_config.hper ogni scheda (tutte le funzioni immagine restano abilitate nel firmware stock); aggiornato il MicroPython incluso.
Correzioni di bug¶
Imaging:
Corretti
image.save()senza estensione del file, la mappaturagain_db/gain_db_ceilingper OV2640 / OV7725 / OV9650 / MT9V034, il guadagno eccessivo insharpen(), il rumore ai bordi morfologico, una divisione per zero in un’operazione su immagine e un crash da stack-smash su una dimensione del kernel del filtro troppo grande (ora un errore pulito).
Sistema:
Protetto il buffer USB VCP con una sezione atomica (corruzione seriale, #313), corretta la connettività USB su Windows, il montaggio del filesystem della flash interna se la scheda SD fallisce, il valore PLLP di
set_frequency()dicpufreqe un bug di flashing del firmware nel bootloader.
Hardware e supporto schede¶
OpenMV Cam H7 (STM32H7) — nuova scheda con un encoder JPEG hardware e ADC / DAC dell’H7.
machine— abilitato il bus I2C4.
Modifiche incompatibili dell’API¶
Rotture dell’API visibili all’utente tra la v2.7.0 e la v2.8.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Entrambe le modifiche incompatibili sono minor e riguardano solo gli script che usavano la funzionalità interessata. Ogni hash di commit rimanda al suo diff su GitHub.
L’ordine degli argomenti posizionali Python ora è rigido (minor)¶
Il parsing degli argomenti nei moduli C Python (image / sensor / fir / gif / lcd / mjpeg) ora legge gli argomenti posizionali prima delle keyword e blocca l’ordine posizionale. In combinazione con i nuovi argomenti keyword sui metodi di disegno (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() che hanno guadagnato thickness / fill / scale / size), il codice che passava i parametri fuori ordine in modo posizionale — o che passava un color posizionale dopo uno dei nuovi argomenti — deve usare argomenti keyword o l’ordine posizionale documentato.
image.mask_ellipse() rimossa (minor)¶
image.mask_ellipse() è stata rimossa. Gli script che la chiamavano devono eliminare la chiamata o usare una ROI / immagine maschera esplicita.
Commit: d7159fba3
Checklist di migrazione¶
Passa gli argomenti per keyword (o nell’ordine posizionale documentato), in particolare color sui metodi di disegno (la modifica dell’ordine degli argomenti), e rimuovi le chiamate a image.mask_ellipse() (la rimozione di mask_ellipse). Tutti gli altri script funzionano senza modifiche.