v2.5.0¶
v2.5.0 è una release di imaging ricca di funzionalità: aggiunge find_rects(), find_circles(), get_regression() (fitting di linee/regressione), find_number() (cifre LeNet), le classi di stream ImageWriter / ImageReader, sensor.flush() / width() / height() e il supporto a pyb.RTC. Il caricamento delle immagini è ora basato sul framebuffer — leggi le modifiche incompatibili qui sotto.
In evidenza¶
image.find_rects()— rilevatore di rettangoli / quadrilateri con output degli angoli.image.find_circles()— rilevamento di cerchi con Hough.image.get_regression()— fitting di linee ai minimi quadrati e robusto (Theil-Sen).image.find_number()— riconoscimento di cifre con LeNet.ImageWriter/ImageReader— registra e riproduci stream di immagini.Supporto a
pyb.RTC, oltre asensor.flush()/sensor.width()/sensor.height().Incompatibile: il caricamento delle immagini è ora basato sul framebuffer e solleva un’eccezione se l’immagine è troppo grande — vedi le modifiche incompatibili.
Nuove funzionalità¶
Rilevamento di caratteristiche — aggiunti
image.find_rects()(rilevatore di quadrilateri AprilTag; oggetti rect conx/y/w/h/corners/magnitude),image.find_circles()(Hough),image.get_regression()(fitting di linee ai minimi quadrati + robusto Theil-Sen) eimage.find_number()(riconoscimento di cifre con LeNet), ciascuno con script di esempio.Angoli dei risultati — aggiunto un attributo
cornersagli oggetti risultato di codici QR / AprilTag / data matrix / codici a barre.Stream di immagini — aggiunte le classi
image.ImageWriter/image.ImageReader(formato a blocchi allineati a 16 byte) con gli esempiimage_writer.py/image_reader.py.Sensore — aggiunti
sensor.flush()(invia il framebuffer all’IDE senza uno snapshot) esensor.width()/sensor.height().pyb.RTC— abilitato il supporto RTC con un esempiortc.py.Aggiunti una cascata di Haar per volti di gatto e un esempio Servo-Shield (PCA9685); lo strumento host
openmv-cascade.pyha acquisito il supporto per il nuovo formato di cascata XML di OpenCV.
Altre modifiche e miglioramenti¶
Il framebuffer è stato rifattorizzato in modo che i metodi immagine
copy_to_fbaggiornino l’anteprima dell’IDE; i percorsi diHaarCascade()non richiedono più uno/iniziale (integrato vs. file viene rilevato automaticamente); la registrazione GIF/MJPEG ora supporta la VGA (e le GIF BAYER); il fileREADME.txtintegrato è stato aggiornato e il file driveropenmv.infnon viene più creato su un filesystem appena inizializzato.
Correzioni di bug¶
Imaging:
Corretti l’accumulo dei voti di
find_circles(), l’offset rho diget_regression()con una ROI e una perdita di memoria, la fusione dei segmenti difind_lines(), la media degli angoli difind_blobs()e i limiti di colore predefiniti (meno restrittivi), la stabilità dell’ordinamento dei keypoint ORB / l’ordinamento dei descrittori e il flag di corrispondenza, oltre al caricamento bufferizzato della cascata di Haar (letture non allineate).
Sistema:
Abilitato il Servo 3 (P9) di
pyb(#256), corretto l’init dell’RTC, aumentato il timeout dei caratteri della UART (#240) e corretto il flag «enabled» non inizializzato del framebuffer del sensore.
Hardware e supporto schede¶
Modifiche incompatibili alle API¶
Incompatibilità delle API visibili all’utente tra v2.4.1 e v2.5.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
La modifica incompatibile è una modifica di behavior (stessa API, risultato diverso) — ricontrolla gli script interessati. Ogni hash di commit rimanda al relativo diff su GitHub.
Il caricamento delle immagini è basato sul framebuffer (behavior)¶
image.Image / il caricamento delle immagini ora copia l’immagine caricata nel framebuffer principale e solleva un’eccezione se l’immagine è troppo grande per entrarvi. I caricamenti che in precedenza riuscivano in un buffer sull’heap possono ora fallire — assicurati che le immagini caricate entrino nel framebuffer (o gestisci il nuovo errore).
Commit: 87d53385a
Checklist di migrazione¶
Assicurati che le immagini caricate entrino nel framebuffer (o intercetta il nuovo errore «image too large») dove in precedenza ti basavi sui caricamenti di immagini supportati dall’heap (la modifica del caricamento delle immagini). Tutti gli altri script funzionano senza modifiche.