v2.8.0¶
v2.8.0 ist ein gewaltiges Release. Es nimmt die OpenMV Cam H7 (STM32H7) mit einem Hardware-JPEG-Encoder und H7-ADC/DAC in Betrieb, bringt eine umfangreiche Überarbeitung der image-API (Linienstärke/Füllungen beim Zeichnen, Mathematik-/Binäroperationen, viele neue Filter, Otsu-Schwellenwertbildung), MicroPython-Threading sowie das Versionsmodul omv. Die Reihenfolge des Python-Argument-Parsings wurde festgelegt und image.mask_ellipse() wurde entfernt – lesen Sie die nachstehenden Breaking Changes.
Highlights¶
OpenMV Cam H7 – neue STM32H7-Platine mit einem Hardware-JPEG-Encoder und H7-ADC / DAC.
image-Überarbeitung – Linienstärke, Form-Füllungen,draw_arrow()/draw_image(), vollständige Mathematik-/Binäroperationen und viele neue Filter.Otsu-Schwellenwertbildung –
histogram.get_threshold()und einThreshold-Objekt.Threading – MicroPython
_thread-Unterstützung.omv-Modul – Versions- / Platineninformationen.Breaking: Die Reihenfolge der positionellen Python-Argumente ist jetzt strikt und
image.mask_ellipse()wurde entfernt – siehe die Breaking Changes.
Neue Funktionen¶
OpenMV Cam H7 – STM32H7-Platinenunterstützung mit einem Hardware-JPEG-Encoder, H7-ADC und H7-DAC.
Zeichnen – Linien-
thickness, Form-fill(Rechteck / Kreis), Text-scale/ Kerning, einmono_space-Schlüsselwort fürdraw_string(),image.draw_arrow()undimage.draw_image()(Sprite- / Masken-Zeichnen) hinzugefügt.Mathematische Operationen –
add(),sub(),mul(),div(),min(),max(),difference(),blend(),replace()(mithmirror/vflip/mask) undremove_shadows()hinzugefügt; grundlegende Operationen akzeptieren jetzt einen Skalar-/Farbwert, der auf alle Pixel angewendet wird.Binär / Morphologie – ein neuer Binärbildtyp und
binary(); Linienoperationen sowieerode()/dilate()akzeptieren Masken;open()/close()/top_hat()/black_hat()hinzugefügt.Filter –
cartoon,flood_fill,bilateral,laplacian,blur/gaussian_blur-Aliase sowie adaptive Histogrammausgleichung (histeq(adaptive=, clip_limit=, mask=)) hinzugefügt.Statistik –
get_statistics()/get_histogram()akzeptieren eine Farbschwellenwert-Liste undinvert; Otsuhistogram.get_threshold()und einThreshold-Objekt hinzugefügt.CMSIS CNN –
image.classify_object()mit einemcnn.py-Beispiel hinzugefügt (in v3.0.0 durch dasnn-Modul abgelöst).Threading – das MicroPython
_thread-Modul aktiviert.omv-Modul – Versionsinformationen (version_string,arch,board_type,board_id) hinzugefügt; denmachine-I2C4-Bus und mathematische Spezialfunktionen (erf,gamma, …) aktiviert; Motor-Shield-Beispiele und viele neue Beispielskripte hinzugefügt.
Weitere Änderungen und Verbesserungen¶
Der externe Sensortakt der H7 wurde auf 48 MHz abgesenkt (bessere Bildqualität, niedrigere FPS); niedrige/hohe JPEG-Qualität ist jetzt platinenkonfigurierbar (und für die H7 abgestimmt); platinenspezifisches Feature-Gating über
imlib_config.hhinzugefügt (alle Bildfunktionen bleiben in der Standard-Firmware aktiviert); das gebündelte MicroPython aktualisiert.
Fehlerbehebungen¶
Bildverarbeitung:
Behoben:
image.save()ohne Dateierweiterung, diegain_db/gain_db_ceiling-Zuordnung für die OV2640 / OV7725 / OV9650 / MT9V034, übermäßige Verstärkung insharpen(), morphologisches Kantenrauschen, eine Division durch null in einer Bildoperation sowie ein Stack-Smash-Absturz bei einer zu großen Filterkerngröße (jetzt ein sauberer Fehler).
System:
Den USB-VCP-Puffer mit einem atomaren Abschnitt geschützt (serielle Korruption, #313), die USB-Konnektivität unter Windows behoben, das Einhängen des internen Flash-Dateisystems, falls die SD-Karte fehlschlägt, den
cpufreqset_frequency()-PLLP-Wert sowie einen Bug beim Flashen der Bootloader-Firmware behoben.
Hardware- und Platinenunterstützung¶
OpenMV Cam H7 (STM32H7) – neue Platine mit einem Hardware-JPEG-Encoder und H7-ADC / DAC.
machine– den I2C4-Bus aktiviert.
Breaking-API-Änderungen¶
Für den Benutzer sichtbare API-Brüche zwischen v2.7.0 und v2.8.0. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Beide Breaking Changes sind minor und betreffen nur Skripte, die die jeweilige Funktion verwendet haben. Jeder Commit-Hash verweist auf seinen Diff auf GitHub.
Die Reihenfolge der positionellen Python-Argumente ist jetzt strikt (minor)¶
Das Argument-Parsing über die Python-C-Module hinweg (image / sensor / fir / gif / lcd / mjpeg) liest positionelle Argumente jetzt vor Schlüsselwörtern und legt die positionelle Reihenfolge fest. In Kombination mit den neuen Schlüsselwortargumenten der Zeichenmethoden (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() erhalten thickness / fill / scale / size) muss Code, der Parameter positionell in falscher Reihenfolge übergab – oder ein positionelles color nach einem der neuen Argumente übergab –, Schlüsselwortargumente oder die dokumentierte positionelle Reihenfolge verwenden.
image.mask_ellipse() entfernt (minor)¶
image.mask_ellipse() wurde entfernt. Skripte, die es aufriefen, müssen den Aufruf entfernen oder stattdessen einen expliziten ROI / ein Maskenbild verwenden.
Commits: d7159fba3
Migrations-Checkliste¶
Übergeben Sie Argumente per Schlüsselwort (oder in der dokumentierten positionellen Reihenfolge), insbesondere color bei den Zeichenmethoden (die Argument-Reihenfolge-Änderung), und entfernen Sie image.mask_ellipse()-Aufrufe (das Entfernen von mask_ellipse). Alle anderen Skripte laufen unverändert weiter.