v1.4.0

v1.4.0 este o reorganizare fundamentală a imlib. find_blobs() / find_markers() au fost rescrise pentru urmărirea directă pe baza pragului de culoare, multe metode de imagine de sine stătătoare au fost incluse în tupluri de blob-uri, iar câteva metode de imagine au fost redenumite (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). De asemenea, adaugă sensor.get_fb() / comutatoarele AGC / AEC și ~60 de scripturi de exemplu. Aceasta este o versiune puternic incompatibilă — citiți modificările incompatibile de mai jos.

Aspecte importante

  • Urmărire de blob-uri pe bază de culoarefind_blobs() preia direct praguri de culoare și returnează o listă plată de tupluri de blob-uri.

  • Curățare imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Senzor — s-au adăugat sensor.get_fb() și comutatoarele de activare AGC/AEC.

  • ~60 de scripturi de exemplu adăugate/extinse.

  • Incompatibil: API-ul de blob-uri, metodele de imagine eliminate și câteva redenumiri — consultați modificările incompatibile.

Caracteristici noi

  • Senzor — s-au adăugat sensor.get_fb() (recuperează tamponul de cadre al ultimului instantaneu), sensor.set_gain_ctrl(enable) (comută AGC) și sensor.set_exposure_ctrl(enable) (comută AEC).

  • Imagine — indexarea imaginii (img[i]) acceptă acum atât citirea, cât și scrierea pixelilor (tonuri de gri / RGB565 / JPEG); s-a adăugat un image.compress() pe loc și un cuvânt-cheie quality= la funcțiile JPEG; find_blobs() / find_markers() / find_features() returnează acum o listă goală (iterabilă) în loc de o non-listă atunci când nu se găsește nimic.

  • S-au adăugat ~60 de scripturi de exemplu (control al plăcii, filtre de imagine, urmărire de culoare, detectare de fețe / ochi / caracteristici, shield WiFi) și un al doilea exemplu de detectare a irisului.

Alte modificări și îmbunătățiri

  • image.histeq() funcționează acum pe imagini RGB565, nu doar pe cele în tonuri de gri.

Corectări de erori

  • S-a inițializat pyb.DAC la pornire pentru ca DAC-ul să funcționeze (#121), s-a corectat un image.dilate() defect, coruperea de zero octeți a client.send() la WINC, reiterarea îmbinării blob-urilor, o eroare de reinițializare a tamponului de fișiere care defecta sistemul de fișiere după prima utilizare, calculul To_min / To_max al termopilei (#113) și s-a aplicat un patch HAL I2C/DMA din amonte de la MicroPython.

Suport hardware și plăci

  • Shield WiFi — WINC1500 actualizat la fișierele de placă Rev-B.

  • pyb.DAC — perifericul DAC activat.

Modificări incompatibile ale API-ului

Modificări ale API-ului vizibile pentru utilizatori între v1.3.0 și v1.4.0. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.

Fiecare modificare este etichetată cu impactul său:

  • major — afectează majoritatea scripturilor care au folosit funcționalitatea; va trebui să portați codul.

  • minor — API restrâns; afectează doar scripturile care l-au folosit.

Modificările sunt grupate după impact, în această ordine. Dacă doriți doar să vă portați codul, treceți la lista de verificare pentru migrare de la final. Fiecare hash de commit trimite către diff-ul său pe GitHub.

find_blobs() / find_markers() rescrise (major)

image.find_blobs() / find_markers() au fost rescrise pentru urmărirea pe bază de culoare: acum treceți direct praguri de culoare (și o funcție de filtrare opțională) în loc să operați pe o imagine presegmentată, iar rezultatul este o singură listă plată de tupluri de blob-uri cu 10 elemente (cu un câmp de cod de culoare) în loc de un arbore imbricat per culoare. Refaceți scripturile de urmărire de culoare pentru a trece praguri de culoare și a itera lista plată.

Commit-uri: d1ff36602, 16daeb83a

Metode de imagine de sine stătătoare eliminate (major)

image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() și image.pixels() au fost eliminate. Datele de centroid / orientare / număr de pixeli sunt acum disponibile ca câmpuri ale tuplurilor de blob-uri returnate de find_blobs().

Commit-uri: 9e5d379c1

Redenumiri de metode imlib (major)

Câteva metode de imagine au fost redenumite/refăcute: image.subimg()image.copy(), image.blit()image.replace(), iar image.blend() a fost modificat pentru a se potrivi cu celelalte operații pe două imagini. Metodele image.scale() / scaled() / rainbow() au fost eliminate (rainbow a fost mutat în modulul FIR). Actualizați apelurile la noile nume.

Commit-uri: b534dc6ff

find_eyes() redenumit în find_eye() (minor)

image.find_eyes() a fost redenumit în image.find_eye() și returnează acum un tuplu cu 2 elemente al irisului (x, y) în loc de tuplul anterior al ochilor. Redenumiți apelul și actualizați gestionarea valorii returnate.

Commit-uri: 7a01a9bed

image.compress() redenumit în compressed() (minor)

image.compress() (care returna o nouă imagine JPEG) a fost redenumit în image.compressed(); noul image.compress() comprimă în schimb imaginea pe loc și returnează None. image.save() a primit, de asemenea, un cuvânt-cheie quality= și returnează acum None în loc de True. Migrați img.compress(q) (care se aștepta la o imagine returnată) la img.compressed(quality=q).

Commit-uri: 367e5fdd3

Listă de verificare pentru migrare

Pentru o portare curată la v1.4.0, lucrul obișnuit este:

  1. Refaceți codul de urmărire de culoare pentru a trece praguri de culoare către find_blobs() / find_markers() și a itera lista plată de tupluri de blob-uri (rescrierea find_blobs).

  2. Citiți datele de centroid / orientare / pixeli din tuplurile de blob-uri în loc de metodele de sine stătătoare eliminate (metodele de imagine eliminate).

  3. Redenumiți subimgcopy, blitreplace, corectați apelurile blend() și înlocuiți scale / scaled / rainbow (redenumirile imlib).

  4. Redenumiți find_eyes()find_eye() (redenumirea find_eye) și compress()compressed() (redenumirea compress).

Toate celelalte scripturi rulează nemodificate.