v2.6.0

v2.6.0 aktualisiert den Kern auf MicroPython 1.9.2, stellt find_line_segments() auf den LSD-Algorithmus um, fügt Unterstützung für den MT9V034-Global-Shutter-Sensor, die Perspektivkorrektur image.rotation_corr(), sensor.sleep(), das Speichern von Rohbildern und Vorarbeiten für die OpenMV-4-Platine hinzu. find_line_segments(), mehrere Framesizes und das Verhalten von MicroPython haben sich geändert – lesen Sie die nachstehenden Breaking Changes.

Highlights

  • Kern-Update auf MicroPython 1.9.2.

  • LSD-Liniensegmentefind_line_segments() verwendet jetzt den Line-Segment-Detector-Algorithmus.

  • Unterstützung für den MT9V034-Global-Shutter-Sensor.

  • image.rotation_corr() – Perspektivische Rotationskorrektur in X/Y/Z.

  • sensor.sleep() Soft-Sleep-Modus und Speichern von Roh- (unkomprimierten) Bildern.

  • Breaking: Die Parameter von find_line_segments(), mehrere Framesize-Konstanten und das Verhalten von MicroPython haben sich geändert – siehe die Breaking Changes.

Neue Funktionen

  • image.rotation_corr() – Perspektivische Rotationskorrektur in X/Y/Z mit einem Beispiel rotation_correction.py hinzugefügt.

  • sensor.sleep(enable) – Versetzt die Kamera in einen Soft-Sleep-Modus (mit einem Sleep-Modus-Beispiel).

  • Rohbilderimage.save() kann jetzt Roh- (unkomprimierte) Bilder schreiben.

  • MT9V034 – Unterstützung für den Global-Shutter-Sensor hinzugefügt, der die Konstante sensor.MT9V034 bereitstellt.

  • Ein Beispiel lens_correction.py für image.lens_corr() sowie Unterstützungsdateien für die OpenMV-4-Platine (Platinenkonfiguration / Bootloader / Linker-Vorarbeiten) hinzugefügt.

Weitere Änderungen und Verbesserungen

  • Das gebündelte MicroPython auf 1.9.2 aktualisiert (1.9-Port-Plumbing, oofatfs); find_line_segments.py für die neue LSD-API neu geschrieben (Linsenkorrektur standardmäßig deaktiviert); die hostseitige openmv-API aktualisiert (init(portname) / exec_script / stop_script); den Sensortakt der OpenMV Cam M4 abgesenkt (niedrigere maximale FPS auf der M4); der Stop-Button der IDE verwendet jetzt eine harte erzwungene Ausnahme, um Skripte zuverlässiger zu unterbrechen.

Fehlerbehebungen

  • Behoben: image.lens_corr() hinterließ veraltete Pixel (der Zielpuffer wird nun vor dem Remapping gelöscht), blob.density() verwendete Ganzzahldivision (gab stets 0 zurück, #268), die UART-Pin-Zuordnung der OpenMV 2 (M4); außerdem wurde qrcodes_with_lens_corr.py aktualisiert, um QVGA zu verwenden.

Hardware- und Platinenunterstützung

  • MT9V034 Global-Shutter-Sensor.

  • OpenMV 4 – Platinen-Unterstützungsdateien (Vorarbeiten).

  • OpenMV 2 (M4) – Korrektur der UART-Pin-Zuordnung.

Breaking-API-Änderungen

Für den Benutzer sichtbare API-Brüche zwischen v2.5.0 und v2.6.0. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.

Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:

  • major – betrifft die meisten Skripte, die die Funktion verwendet haben; Sie müssen Code portieren.

  • minor – schmale API; betrifft nur Skripte, die sie verwendet haben.

  • behavior – gleiche API, andere Ergebnisse; überprüfen Sie abgestimmte Skripte erneut.

Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn Sie nur Ihren Code portieren möchten, springen Sie zur Migrations-Checkliste am Ende. Jeder Commit-Hash verweist auf seinen Diff auf GitHub.

find_line_segments() auf LSD umgestellt (major)

image.find_line_segments() wurde neu geschrieben, um den Line-Segment-Detector-Algorithmus (LSD) zu verwenden. Die alten Parameter threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride wurden durch merge_distance und max_theta_diff ersetzt (z. B. find_line_segments(merge_distance=0, max_theta_diff=15)). Außerdem ist die Funktion auf Platinen der M4-Klasse (OpenMV 2) nicht mehr verfügbar.

Commits: 5a3153c8b, cbe2a4aeb

Ungültige Framesize-Konstanten entfernt (minor)

Die ungültigen Framesize-Konstanten sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA wurden entfernt (#261). Skripte, die diese verwenden, müssen auf eine unterstützte Auflösung umgestellt werden.

Commits: 35ab0a26f

find_qrcodes() auf der OpenMV Cam M4 entfernt (minor)

image.find_qrcodes() wird auf Platinen der M4-Klasse (OpenMV 2) nicht mehr einkompiliert. Verwenden Sie für die QR-Erkennung auf M4-Hardware eine OpenMV-3-Platine (M7) oder eine andere Code-Funktion. Andere Platinen sind nicht betroffen.

Commits: 7dff089e6

MicroPython auf 1.9.2 aktualisiert (behavior)

Der gebündelte MicroPython-Kern wurde auf 1.9.2 aktualisiert. Das Verhalten der Standardbibliothek und der Sprache folgt dem Upstream-MicroPython 1.9.2 – überprüfen Sie Skripte erneut, die von versionsspezifischem Verhalten abhängen. Insbesondere löst ein Image-Slice mit einem anderen Schritt als 1 nun OSError anstelle von NotImplementedError aus.

Commits: 11bed4b99

Migrations-Checkliste

Für eine saubere Portierung auf v2.6.0 fällt typischerweise folgende Arbeit an:

  1. find_line_segments()-Aufrufe für die LSD-Parameter (merge_distance / max_theta_diff) umschreiben und diese Verarbeitung von der M4 weg verlagern (die LSD-Überarbeitung).

  2. Entfernte Framesize-Konstanten durch eine unterstützte Auflösung ersetzen (das Entfernen der Framesizes).

  3. Die QR-Code-Erkennung der M4 auf eine M7-Platine verlagern (die find_qrcodes-Änderung).

  4. Versionsspezifisches Verhalten gegen MicroPython 1.9.2 erneut validieren (der MicroPython-Versionssprung).

Alle anderen Skripte laufen unverändert weiter.