v1.1.0

v1.1.0 ist die grundlegende Architekturversion: Sie verwirft die frühen benutzerdefinierten Peripheriegerätemodule zugunsten der standardmäßigen MicroPython-Built-ins, verschiebt die Bildgebungs-API in das image-Modul und die Bildraten-Uhr in time und fügt eingebaute Haar-Cascades, get_pixel() / set_pixel(), Unterstützung für das OpenMV 2 Board und USB-CDC-Debugging hinzu. Es ist eine stark inkompatible, API-definierende Version — lesen Sie die inkompatiblen Änderungen unten.

Highlights

  • MicroPython-Built-ins — die benutzerdefinierten Module gpio / led / spi / socket / wlan / uart / file / select wurden zugunsten von MicroPythons pyb / machine entfernt.

  • image-Modul — Image() / HaarCascade() / Deskriptoren befinden sich nun im image-Modul.

  • time.clock — die Bildraten-Uhr wurde in das time-Modul verschoben.

  • Eingebaute Haar-CascadesHaarCascade("frontalface") / HaarCascade("eye") (keine Datei erforderlich).

  • OpenMV 2 Board-Unterstützung und USB-CDC-Debugging.

  • Inkompatibel: die Modulstruktur wurde neu definiert — siehe die inkompatiblen Änderungen.

Neue Funktionen

  • ImageImage.get_pixel(x, y) / set_pixel() und Pixelzugriff per img[i]-Subskript hinzugefügt; eingebaute Flash-Haar-Cascades (HaarCascade("frontalface") / HaarCascade("eye")) und ein stages=-Schlüsselwort zur Begrenzung der Cascade-Stufen; draw_string() funktioniert auf Graustufenbildern.

  • Sensorsensor.set_colorbar(), sensor.set_saturation() und die QQVGA2-Framegröße hinzugefügt.

  • mlxmlx.read(type) mit mlx.RAINBOW / mlx.GRAYSCALE Ausgabe.

  • Debugging — Debugging über USB CDC implementiert, eine Firmware-fw_version()-Abfrage, board-spezifische Firmware (OpenMV 1 / OpenMV 2) und Selbsttest- / Colorbar-Skripte; fatale Fehler/Parse-Fehler werden in den Flash protokolliert.

Weitere Änderungen und Verbesserungen

  • Speichermangel löst nun MemoryError statt OSError aus; Skripte laufen mit erneutem Auslösen von Ausnahmen, sodass Fehler ausgegeben werden, statt einen Absturz zu verursachen; die serielle Baudrate ist konfigurierbar (Standard 921600); ein größeres Flash-Dateisystem; der Sensor-Pixeltakt wurde für die Aufnahmestabilität auf 54 MHz gesenkt; sensor.reset() verlässt sich nur noch auf einen Soft-Reset des Sensors.

Fehlerbehebungen

  • Behoben wurden Template-Matching, find_features() mit Wiederholung des ersten Objekts, atomarer SCCB/I2C-Registerzugriff, SD-Karten-Chip-Erkennung, Soft-I2C-Pin-Zuordnung, fast_cbrtf / LAB-Farbgenauigkeit sowie der Speicherverbrauch von Integralbild / Medianfilter auf der OpenMV 1 / 2.

Hardware- und Board-Unterstützung

  • OpenMV 2 (STM32F427) Board-Unterstützung (sowie das OpenMV 3 Hardware-Design); auf der OpenMV 2 wird MCO als Sensortakt verwendet.

Inkompatible API-Änderungen

Für den Benutzer sichtbare API-Brüche zwischen v1.0.3-beta und v1.1.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.

  • 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 verlinkt auf seinen Diff auf GitHub.

Benutzerdefinierte Peripheriegerätemodule entfernt (major)

Die frühen benutzerdefinierten Module clock / file / gpio / led / select / socket / spi / wlan / uart wurden zugunsten von MicroPythons eingebauten pyb / machine Peripheriegeräten entfernt. Portieren Sie Skripte auf die standardmäßigen MicroPython-Entsprechungen (z. B. pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commits: 6d2fafa94

Bildgebungs-API in das image-Modul verschoben (major)

Image(), HaarCascade() und die Funktionen zum Speichern/Laden von Deskriptoren sind keine bloßen Built-ins mehr — sie befinden sich im neuen image-Modul. Skripte müssen import image verwenden und image.Image / image.HaarCascade() benutzen.

Commits: 54288c535

Bildraten-Uhr in time verschoben (major)

Das eigenständige clock-Modul wurde entfernt; die Bildraten-Uhr befindet sich nun in time. Verwenden Sie import time und clock = time.clock() — das zurückgegebene Objekt stellt weiterhin .tick() / .fps() / .avg() / .reset() bereit.

Commits: a8928ca3b

/flash und /sd werden nicht mehr zu sys.path hinzugefügt (behavior)

Die Volume-Labels / das Wurzelverzeichnis wurden festgelegt, und /flash und /sd werden nicht mehr automatisch an sys.path angehängt. Skripte, die Hilfsmodule unter bloßem Namen aus diesen Verzeichnissen importiert haben, müssen den Pfad explizit hinzufügen (oder die Module dort ablegen, wo sie gefunden werden).

Commits: 09e77b5da

Migrations-Checkliste

Für eine saubere Portierung auf v1.1.0 sind typischerweise folgende Schritte erforderlich:

  1. Ersetzen Sie die benutzerdefinierten Module gpio / led / spi / uart / socket / wlan / file / select durch MicroPython pyb / machine (die Entfernung der benutzerdefinierten Module).

  2. import image und stellen Sie Image() / HaarCascade() ein image. voran (die Verschiebung des image-Moduls).

  3. Verwenden Sie import time und clock = time.clock() (die Verschiebung der clock).

  4. Fügen Sie /flash / /sd explizit zu sys.path hinzu, wenn Sie Hilfsmodule unter bloßem Namen importiert haben (die sys.path-Änderung).

Alle anderen Skripte laufen unverändert.