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 a sensor.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 con x / y / w / h / corners / magnitude), image.find_circles() (Hough), image.get_regression() (fitting di linee ai minimi quadrati + robusto Theil-Sen) e image.find_number() (riconoscimento di cifre con LeNet), ciascuno con script di esempio.

  • Angoli dei risultati — aggiunto un attributo corners agli 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 esempi image_writer.py / image_reader.py.

  • Sensore — aggiunti sensor.flush() (invia il framebuffer all’IDE senza uno snapshot) e sensor.width() / sensor.height().

  • pyb.RTC — abilitato il supporto RTC con un esempio rtc.py.

  • Aggiunti una cascata di Haar per volti di gatto e un esempio Servo-Shield (PCA9685); lo strumento host openmv-cascade.py ha 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_fb aggiornino l’anteprima dell’IDE; i percorsi di HaarCascade() non richiedono più uno / iniziale (integrato vs. file viene rilevato automaticamente); la registrazione GIF/MJPEG ora supporta la VGA (e le GIF BAYER); il file README.txt integrato è stato aggiornato e il file driver openmv.inf non viene più creato su un filesystem appena inizializzato.

Correzioni di bug

Imaging:

  • Corretti l’accumulo dei voti di find_circles(), l’offset rho di get_regression() con una ROI e una perdita di memoria, la fusione dei segmenti di find_lines(), la media degli angoli di find_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

  • Supporto a pyb.RTC e Servo 3 (P9) di pyb; esempio Servo-Shield (PCA9685).

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.