v2.6.0

v2.6.0 aggiorna il core a MicroPython 1.9.2, fa passare find_line_segments() all’algoritmo LSD, aggiunge il supporto al sensore MT9V034 a global shutter, la correzione prospettica image.rotation_corr(), sensor.sleep(), il salvataggio di immagini raw e le fondamenta per la scheda OpenMV 4. find_line_segments(), diversi framesize e il comportamento di MicroPython sono cambiati — leggi le modifiche incompatibili qui sotto.

In evidenza

  • Aggiornamento del core a MicroPython 1.9.2.

  • Segmenti di linea LSDfind_line_segments() ora usa l’algoritmo Line Segment Detector.

  • Supporto al sensore a global shutter MT9V034.

  • image.rotation_corr() — correzione della rotazione prospettica su X/Y/Z.

  • sensor.sleep() modalità soft sleep e salvataggio di immagini raw (non compresse).

  • Incompatibilità: i parametri di find_line_segments(), diverse costanti framesize e il comportamento di MicroPython sono cambiati — vedi le modifiche incompatibili.

Nuove funzionalità

  • image.rotation_corr() — aggiunta la correzione della rotazione prospettica su X/Y/Z con un esempio rotation_correction.py.

  • sensor.sleep(enable) — mette la camera in una modalità soft sleep (con un esempio di modalità sleep).

  • Immagini rawimage.save() ora può scrivere immagini raw (non compresse).

  • MT9V034 — aggiunto il supporto al sensore a global shutter, esponendo la costante sensor.MT9V034.

  • Aggiunto un esempio lens_correction.py per image.lens_corr() e i file di supporto per la scheda OpenMV 4 (fondamenta di configurazione scheda / bootloader / linker).

Altre modifiche e miglioramenti

  • Aggiornato il MicroPython incluso a 1.9.2 (plumbing del port 1.9, oofatfs); riscritto find_line_segments.py per la nuova API LSD (correzione lente disattivata di default); aggiornata l’API openmv lato host (init(portname) / exec_script / stop_script); abbassato il clock del sensore sull’OpenMV Cam M4 (FPS massimi più bassi sull’M4); il pulsante Stop dell’IDE ora usa un’eccezione forzata hard per interrompere gli script in modo più affidabile.

Correzioni di bug

  • Corretti image.lens_corr() che lasciava pixel obsoleti (il buffer di destinazione ora viene azzerato prima del remapping), blob.density() che usava la divisione intera (restituiva sempre 0, #268), la mappatura dei pin UART sull’OpenMV 2 (M4) e aggiornato qrcodes_with_lens_corr.py per usare QVGA.

Hardware e supporto schede

  • Sensore a global shutter MT9V034.

  • OpenMV 4 — file di supporto scheda (fondamenta).

  • OpenMV 2 (M4) — correzione della mappatura dei pin UART.

Modifiche incompatibili dell’API

Rotture dell’API visibili all’utente tra la v2.5.0 e la v2.6.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.

find_line_segments() passa a LSD (major)

image.find_line_segments() è stato riscritto per usare l’algoritmo Line Segment Detector (LSD). I vecchi parametri threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride sono stati sostituiti da merge_distance e max_theta_diff (es. find_line_segments(merge_distance=0, max_theta_diff=15)). Inoltre non è più disponibile sulle schede di classe M4 (OpenMV 2).

Commit: 5a3153c8b, cbe2a4aeb

Costanti framesize non valide rimosse (minor)

Le costanti framesize non valide sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA sono state rimosse (#261). Gli script che le usano devono passare a una risoluzione supportata.

Commit: 35ab0a26f

find_qrcodes() rimossa sull’OpenMV Cam M4 (minor)

image.find_qrcodes() non viene più compilata sulle schede di classe M4 (OpenMV 2). Usa una scheda OpenMV 3 (M7) o un’altra funzionalità di codice per il rilevamento dei QR su hardware M4. Le altre schede non sono interessate.

Commit: 7dff089e6

MicroPython aggiornato a 1.9.2 (behavior)

Il core MicroPython incluso è stato aggiornato a 1.9.2. Il comportamento della libreria standard e del linguaggio segue l’upstream MicroPython 1.9.2 — ricontrolla gli script che dipendono da comportamenti specifici della versione. In particolare, uno slice di immagine con uno step diverso da 1 ora solleva OSError invece di NotImplementedError.

Commit: 11bed4b99

Checklist di migrazione

Per un porting pulito alla v2.6.0 il lavoro tipico è:

  1. Riscrivere le chiamate a find_line_segments() per i parametri LSD (merge_distance / max_theta_diff) e spostare quell’elaborazione fuori dall’M4 (la rielaborazione LSD).

  2. Sostituire le costanti framesize rimosse con una risoluzione supportata (la rimozione dei framesize).

  3. Spostare il rilevamento dei codici QR dall’M4 a una scheda M7 (la modifica di find_qrcodes).

  4. Rivalidare il comportamento specifico della versione rispetto a MicroPython 1.9.2 (l’aggiornamento di MicroPython).

Tutti gli altri script funzionano senza modifiche.