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-Schwellenwertbildunghistogram.get_threshold() und ein Threshold-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, ein mono_space-Schlüsselwort für draw_string(), image.draw_arrow() und image.draw_image() (Sprite- / Masken-Zeichnen) hinzugefügt.

  • Mathematische Operationenadd(), sub(), mul(), div(), min(), max(), difference(), blend(), replace() (mit hmirror / vflip / mask) und remove_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 sowie erode() / dilate() akzeptieren Masken; open() / close() / top_hat() / black_hat() hinzugefügt.

  • Filtercartoon, flood_fill, bilateral, laplacian, blur / gaussian_blur-Aliase sowie adaptive Histogrammausgleichung (histeq(adaptive=, clip_limit=, mask=)) hinzugefügt.

  • Statistikget_statistics() / get_histogram() akzeptieren eine Farbschwellenwert-Liste und invert; Otsu histogram.get_threshold() und ein Threshold-Objekt hinzugefügt.

  • CMSIS CNNimage.classify_object() mit einem cnn.py-Beispiel hinzugefügt (in v3.0.0 durch das nn-Modul abgelöst).

  • Threading – das MicroPython _thread-Modul aktiviert.

  • omv-Modul – Versionsinformationen (version_string, arch, board_type, board_id) hinzugefügt; den machine-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.h hinzugefügt (alle Bildfunktionen bleiben in der Standard-Firmware aktiviert); das gebündelte MicroPython aktualisiert.

Fehlerbehebungen

Bildverarbeitung:

  • Behoben: image.save() ohne Dateierweiterung, die gain_db / gain_db_ceiling-Zuordnung für die OV2640 / OV7725 / OV9650 / MT9V034, übermäßige Verstärkung in sharpen(), 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 cpufreq set_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.

Commits: e0e112468, fc74e70c3

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.