v2.8.0

v2.8.0 este o versiune masivă. Aduce la viață OpenMV Cam H7 (STM32H7) cu un codificator JPEG hardware și ADC/DAC H7, o revizuire amplă a API-ului image (grosime/umpleri de desenare, operații matematice/binare, multe filtre noi, prag Otsu), fire de execuție MicroPython și modulul de versiune omv. Ordinea de analizare a argumentelor Python a fost fixată și image.mask_ellipse() a fost eliminat — citiți modificările incompatibile de mai jos.

Aspecte importante

  • OpenMV Cam H7 — placă STM32H7 nouă cu un codificator JPEG hardware și ADC / DAC H7.

  • Revizuirea image — grosimea liniei, umplerea formelor, draw_arrow() / draw_image(), operații matematice/binare complete și multe filtre noi.

  • Prag Otsuhistogram.get_threshold() și un obiect Threshold.

  • Fire de execuție — suport pentru _thread din MicroPython.

  • Modulul omv — informații despre versiune / placă.

  • Incompatibil: ordinea argumentelor pozitionale Python este acum strictă și image.mask_ellipse() a fost eliminat — consultați modificările incompatibile.

Funcționalități noi

  • OpenMV Cam H7 — suport pentru placa STM32H7 cu un codificator JPEG hardware, ADC H7 și DAC H7.

  • Desenare — s-au adăugat thickness pentru linie, fill pentru forme (dreptunghi / cerc), scale / kerning pentru text, un argument mono_space la draw_string(), image.draw_arrow() și image.draw_image() (desenare de sprite / măști).

  • Operații matematice — s-au adăugat add(), sub(), mul(), div(), min(), max(), difference(), blend(), replace() (cu hmirror / vflip / mask) și remove_shadows(); operațiile de bază acceptă acum o valoare scalară/de culoare aplicată tuturor pixelilor.

  • Binar / morfologie — un nou tip de imagine binară și binary(); operațiile de linie și erode() / dilate() acceptă măști; s-au adăugat open() / close() / top_hat() / black_hat().

  • Filtre — s-au adăugat cartoon, flood_fill, bilateral, laplacian, aliasurile blur / gaussian_blur și egalizarea adaptivă a histogramei (histeq(adaptive=, clip_limit=, mask=)).

  • Statisticiget_statistics() / get_histogram() acceptă o listă de praguri de culoare și invert; s-au adăugat histogram.get_threshold() Otsu și un obiect Threshold.

  • CMSIS CNN — s-a adăugat image.classify_object() cu un exemplu cnn.py (înlocuit de modulul nn în v3.0.0).

  • Fire de execuție — s-a activat modulul _thread din MicroPython.

  • Modulul omv — s-au adăugat informații despre versiune (version_string, arch, board_type, board_id); s-a activat magistrala I2C4 din machine și funcțiile matematice speciale (erf, gamma, …); s-au adăugat exemple pentru motor-shield și multe scripturi exemplu noi.

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

  • Ceasul extern al senzorului H7 a fost redus la 48 MHz (calitate mai bună a imaginii, FPS mai mic); calitatea JPEG scăzută/ridicată este acum configurabilă pe placă (și reglată pentru H7); s-a adăugat limitarea funcționalităților per placă prin imlib_config.h (toate funcțiile de imagine rămân activate în firmware-ul standard); s-a actualizat MicroPython inclus.

Remedieri de erori

Imagistică:

  • S-au remediat image.save() fără o extensie de fișier, maparea gain_db / gain_db_ceiling pentru OV2640 / OV7725 / OV9650 / MT9V034, amplificarea excesivă din sharpen(), zgomotul morfologic la muchii, o împărțire la zero într-o operație de imagine și o eroare de tip stack-smash la o dimensiune prea mare a nucleului filtrului (acum o eroare curată).

Sistem:

  • S-a protejat tamponul USB VCP cu o secțiune atomică (corupere serială, #313), s-au remediat conectivitatea USB pe Windows, montarea sistemului de fișiere din memoria flash internă dacă cardul SD eșuează, valoarea PLLP a cpufreq set_frequency() și o eroare de scriere a firmware-ului din bootloader.

Suport pentru hardware și plăci

  • OpenMV Cam H7 (STM32H7) — placă nouă cu un codificator JPEG hardware și ADC / DAC H7.

  • machine — s-a activat magistrala I2C4.

Modificări incompatibile ale API-ului

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

Ambele modificări incompatibile sunt minor și afectează doar scripturile care au folosit funcționalitatea relevantă. Fiecare hash de commit duce la diff-ul său pe GitHub.

Ordinea argumentelor pozitionale Python este acum strictă (minor)

Analizarea argumentelor în modulele C Python (image / sensor / fir / gif / lcd / mjpeg) citește acum argumentele pozitionale înaintea celor cu cuvinte cheie și fixează ordinea pozitionala. Combinat cu noile argumente cu cuvinte cheie ale metodelor de desenare (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() câștigând thickness / fill / scale / size), codul care a transmis parametri în afara ordinii pozitional — sau a transmis o color pozitionala după unul dintre noile argumente — trebuie să folosească argumente cu cuvinte cheie sau ordinea pozitionala documentată.

Commits: e0e112468, fc74e70c3

image.mask_ellipse() eliminat (minor)

image.mask_ellipse() a fost eliminat. Scripturile care îl apelau trebuie să elimine apelul sau să folosească în schimb o ROI / imagine de mască explicită.

Commits: d7159fba3

Lista de verificare pentru migrare

Transmiteți argumentele prin cuvinte cheie (sau în ordinea pozitionala documentată), în special color la metodele de desenare (modificarea ordinii argumentelor) și eliminați apelurile image.mask_ellipse() (eliminarea mask_ellipse). Toate celelalte scripturi rulează nemodificate.