v1.4.0

v1.4.0 è una riorganizzazione fondamentale di imlib. find_blobs() / find_markers() sono stati riscritti per il tracciamento diretto tramite soglie di colore, molti metodi immagine autonomi sono stati incorporati nelle tuple dei blob e diversi metodi immagine sono stati rinominati (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). Aggiunge inoltre sensor.get_fb() / i toggle AGC / AEC e ~60 script di esempio. Questa è una release fortemente incompatibile — leggi le modifiche incompatibili più sotto.

In evidenza

  • Tracciamento dei blob basato sul colorefind_blobs() accetta direttamente soglie di colore e restituisce una lista piatta di tuple di blob.

  • Pulizia di imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Sensore — aggiunti sensor.get_fb() e i toggle di abilitazione AGC/AEC.

  • ~60 script di esempio aggiunti/ampliati.

  • Incompatibile: l’API dei blob, i metodi immagine rimossi e diversi rinomini — vedi le modifiche incompatibili.

Nuove funzionalità

  • Sensore — aggiunti sensor.get_fb() (recupera l’ultimo framebuffer di snapshot), sensor.set_gain_ctrl(enable) (attiva/disattiva l’AGC) e sensor.set_exposure_ctrl(enable) (attiva/disattiva l’AEC).

  • Immagine — il subscript dell’immagine (img[i]) ora supporta sia la lettura che la scrittura dei pixel (scala di grigi / RGB565 / JPEG); aggiunti un image.compress() in place e un keyword quality= sulle funzioni JPEG; find_blobs() / find_markers() / find_features() ora restituiscono una lista vuota (iterabile) invece di un valore non-lista quando non viene trovato nulla.

  • Aggiunti ~60 script di esempio (controllo della scheda, filtri immagine, tracciamento del colore, rilevamento di volti / occhi / caratteristiche, shield WiFi) e un secondo esempio di rilevamento dell’iride.

Altre modifiche e miglioramenti

  • image.histeq() ora funziona sulle immagini RGB565, non solo in scala di grigi.

Correzioni di bug

  • Inizializzato pyb.DAC all’avvio in modo che il DAC funzioni (#121), corretti un image.dilate() malfunzionante, la corruzione a zero byte di client.send() del WINC, la re-iterazione della fusione dei blob, un bug di re-inizializzazione del buffer di file che rompeva il filesystem dopo il primo utilizzo, il calcolo di To_min / To_max della termopila (#113), e applicata una patch upstream HAL I2C/DMA di MicroPython.

Hardware e supporto schede

  • Shield WiFi — WINC1500 aggiornato ai file di scheda Rev-B.

  • pyb.DAC — periferica DAC abilitata.

Modifiche API incompatibili

Rotture dell’API visibili all’utente tra v1.3.0 e v1.4.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.

Ogni modifica è contrassegnata in base al suo impatto:

  • major — interessa la maggior parte degli script che usavano la funzionalità; dovrai portare il codice.

  • minor — API ristretta; interessa solo gli script che la usavano.

Le modifiche sono raggruppate per impatto in quest’ordine. Se vuoi semplicemente portare il tuo codice, salta alla checklist di migrazione alla fine. Ogni hash di commit rimanda al relativo diff su GitHub.

find_blobs() / find_markers() riscritti (major)

image.find_blobs() / find_markers() sono stati riscritti per il tracciamento basato sul colore: ora passi direttamente le soglie di colore (e una funzione di filtro opzionale) invece di operare su un’immagine pre-segmentata, e il risultato è un’unica lista piatta di tuple di blob a 10 elementi (con un campo color-code) invece di un albero annidato per colore. Rielabora gli script di tracciamento del colore per passare le soglie di colore e iterare sulla lista piatta.

Commit: d1ff36602, 16daeb83a

Metodi immagine autonomi rimossi (major)

image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() e image.pixels() sono stati rimossi. I dati di centroide / orientamento / conteggio dei pixel sono ora disponibili come campi delle tuple di blob restituite da find_blobs().

Commit: 9e5d379c1

Rinomini dei metodi di imlib (major)

Diversi metodi immagine sono stati rinominati/rielaborati: image.subimg()image.copy(), image.blit()image.replace() e image.blend() è stato modificato per allinearsi alle altre due operazioni a due immagini. I metodi image.scale() / scaled() / rainbow() sono stati rimossi (rainbow è stato spostato nel modulo FIR). Aggiorna le chiamate ai nuovi nomi.

Commit: b534dc6ff

find_eyes() rinominato in find_eye() (minor)

image.find_eyes() è stato rinominato in image.find_eye() e ora restituisce una 2-tupla dell’iride (x, y) invece della precedente tupla degli occhi. Rinomina la chiamata e aggiorna la gestione del valore di ritorno.

Commit: 7a01a9bed

image.compress() rinominato in compressed() (minor)

image.compress() (che restituiva una nuova immagine JPEG) è stato rinominato in image.compressed(); il nuovo image.compress() comprime invece l’immagine in place e restituisce None. Anche image.save() ha acquisito un keyword quality= e ora restituisce None invece di True. Migra img.compress(q) (che si aspetta un’immagine restituita) a img.compressed(quality=q).

Commit: 367e5fdd3

Checklist di migrazione

Per un porting pulito alla v1.4.0 il lavoro tipico è:

  1. Rielabora il codice di tracciamento del colore per passare le soglie di colore a find_blobs() / find_markers() e iterare sulla lista piatta di tuple di blob (la riscrittura di find_blobs).

  2. Leggi i dati di centroide / orientamento / pixel dalle tuple di blob invece che dai metodi autonomi rimossi (i metodi immagine rimossi).

  3. Rinomina subimgcopy, blitreplace, correggi le chiamate blend() e sostituisci scale / scaled / rainbow (i rinomini di imlib).

  4. Rinomina find_eyes()find_eye() (il rinomino di find_eye) e compress()compressed() (il rinomino di compress).

Tutti gli altri script funzionano invariati.