v2.6.0

v2.6.0 actualizează nucleul la MicroPython 1.9.2, comută find_line_segments() la algoritmul LSD, adaugă suport pentru senzorul MT9V034 cu obturator global, corecția de perspectivă image.rotation_corr(), sensor.sleep(), salvarea imaginilor brute și bazele pentru plăcile OpenMV 4. find_line_segments(), mai multe dimensiuni de cadru și comportamentul MicroPython s-au modificat — citiți modificările incompatibile de mai jos.

Aspecte importante

  • Actualizarea nucleului la MicroPython 1.9.2.

  • Segmente de linie LSDfind_line_segments() folosește acum algoritmul Line Segment Detector.

  • Suport pentru senzorul MT9V034 cu obturator global.

  • image.rotation_corr() — corecția rotației de perspectivă pe axele X/Y/Z.

  • sensor.sleep() mod de repaus software și salvarea imaginilor brute (necomprimate).

  • Incompatibil: parametrii find_line_segments(), mai multe constante de dimensiune a cadrului și comportamentul MicroPython s-au modificat — consultați modificările incompatibile.

Funcționalități noi

  • image.rotation_corr() — s-a adăugat corecția rotației de perspectivă pe axele X/Y/Z cu un exemplu rotation_correction.py.

  • sensor.sleep(enable) — pune camera într-un mod de repaus software (cu un exemplu de mod de repaus).

  • Imagini bruteimage.save() poate acum scrie imagini brute (necomprimate).

  • MT9V034 — s-a adăugat suport pentru senzorul cu obturator global, expunând constanta sensor.MT9V034.

  • S-a adăugat un exemplu lens_correction.py pentru image.lens_corr() și fișiere de suport pentru plăcile OpenMV 4 (bazele pentru configurarea plăcii / bootloader / linker).

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

  • S-a actualizat MicroPython inclus la 1.9.2 (infrastructura portului 1.9, oofatfs); s-a rescris find_line_segments.py pentru noul API LSD (corecția obiectivului dezactivată implicit); s-a actualizat API-ul openmv din partea gazdei (init(portname) / exec_script / stop_script); s-a redus frecvența ceasului senzorului OpenMV Cam M4 (FPS maxim mai mic pe M4); butonul Stop din IDE folosește acum o excepție forțată hard pentru a întrerupe scripturile mai fiabil.

Remedieri de erori

  • S-a remediat image.lens_corr() care lăsa pixeli învechiți (tamponul de destinație este acum curățat înainte de remapare), blob.density() care folosea împărțirea întreagă (returna întotdeauna 0, #268), maparea pinilor UART pentru OpenMV 2 (M4) și s-a actualizat qrcodes_with_lens_corr.py pentru a folosi QVGA.

Suport pentru hardware și plăci

  • Senzor MT9V034 cu obturator global.

  • OpenMV 4 — fișiere de suport pentru placă (baze).

  • OpenMV 2 (M4) — remedierea mapării pinilor UART.

Modificări incompatibile ale API-ului

Modificări incompatibile ale API-ului vizibile pentru utilizator între v2.5.0 și v2.6.0. Domeniu: modulele C Python din modules/ și bibliotecile Python din scripts/libraries/.

Fiecare modificare este etichetată cu impactul său:

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

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

  • behavior — același API, rezultate diferite; reverificați scripturile reglate.

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

find_line_segments() a trecut la LSD (major)

image.find_line_segments() a fost rescris pentru a folosi algoritmul Line Segment Detector (LSD). Vechii parametri threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride au fost înlocuiți cu merge_distance și max_theta_diff (de ex. find_line_segments(merge_distance=0, max_theta_diff=15)). De asemenea, nu mai este disponibil pe plăcile din clasa M4 (OpenMV 2).

Commits: 5a3153c8b, cbe2a4aeb

Constantele de dimensiune a cadrului nevalide au fost eliminate (minor)

Constantele de dimensiune a cadrului nevalide sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA au fost eliminate (#261). Scripturile care le folosesc trebuie să treacă la o rezoluție acceptată.

Commits: 35ab0a26f

find_qrcodes() eliminat pe OpenMV Cam M4 (minor)

image.find_qrcodes() nu mai este compilat pe plăcile din clasa M4 (OpenMV 2). Folosiți o placă OpenMV 3 (M7) sau o altă funcționalitate de cod pentru detectarea codurilor QR pe hardware-ul M4. Celelalte plăci nu sunt afectate.

Commits: 7dff089e6

MicroPython actualizat la 1.9.2 (behavior)

Nucleul MicroPython inclus a fost actualizat la 1.9.2. Comportamentul bibliotecii standard și al limbajului urmează versiunea upstream MicroPython 1.9.2 — reverificați scripturile care depind de comportamentul specific versiunii. Notabil, o secțiune de imagine cu un pas diferit de 1 generează acum OSError în loc de NotImplementedError.

Commits: 11bed4b99

Lista de verificare pentru migrare

Pentru o adaptare curată la v2.6.0, munca tipică este:

  1. Rescrieți apelurile find_line_segments() pentru parametrii LSD (merge_distance / max_theta_diff) și mutați acea procesare de pe M4 (refacerea LSD).

  2. Înlocuiți constantele de dimensiune a cadrului eliminate cu o rezoluție acceptată (eliminarea dimensiunilor de cadru).

  3. Mutați detectarea codurilor QR de pe M4 pe o placă M7 (modificarea find_qrcodes).

  4. Revalidați comportamentul specific versiunii față de MicroPython 1.9.2 (actualizarea MicroPython).

Toate celelalte scripturi rulează nemodificate.