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 (subimg → copy, blit → replace, find_eyes → find_eye, compress → compressed). 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 colore —
find_blobs()accetta direttamente soglie di colore e restituisce una lista piatta di tuple di blob.Pulizia di imlib —
subimg()→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) esensor.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 unimage.compress()in place e un keywordquality=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.DACall’avvio in modo che il DAC funzioni (#121), corretti unimage.dilate()malfunzionante, la corruzione a zero byte diclient.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 diTo_min/To_maxdella 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.
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 è:
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).Leggi i dati di centroide / orientamento / pixel dalle tuple di blob invece che dai metodi autonomi rimossi (i metodi immagine rimossi).
Rinomina
subimg→copy,blit→replace, correggi le chiamateblend()e sostituisciscale/scaled/rainbow(i rinomini di imlib).Rinomina
find_eyes()→find_eye()(il rinomino di find_eye) ecompress()→compressed()(il rinomino di compress).
Tutti gli altri script funzionano invariati.