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/selectwurden zugunsten von MicroPythonspyb/machineentfernt.image-Modul —Image()/HaarCascade()/ Deskriptoren befinden sich nun imimage-Modul.time.clock— die Bildraten-Uhr wurde in dastime-Modul verschoben.Eingebaute Haar-Cascades —
HaarCascade("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¶
Image —
Image.get_pixel(x, y)/set_pixel()und Pixelzugriff perimg[i]-Subskript hinzugefügt; eingebaute Flash-Haar-Cascades (HaarCascade("frontalface")/HaarCascade("eye")) und einstages=-Schlüsselwort zur Begrenzung der Cascade-Stufen;draw_string()funktioniert auf Graustufenbildern.Sensor —
sensor.set_colorbar(),sensor.set_saturation()und dieQQVGA2-Framegröße hinzugefügt.mlx—mlx.read(type)mitmlx.RAINBOW/mlx.GRAYSCALEAusgabe.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
MemoryErrorstattOSErroraus; 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:
Ersetzen Sie die benutzerdefinierten Module
gpio/led/spi/uart/socket/wlan/file/selectdurch MicroPythonpyb/machine(die Entfernung der benutzerdefinierten Module).import imageund stellen SieImage()/HaarCascade()einimage.voran (die Verschiebung des image-Moduls).Verwenden Sie
import timeundclock = time.clock()(die Verschiebung der clock).Fügen Sie
/flash//sdexplizit zusys.pathhinzu, wenn Sie Hilfsmodule unter bloßem Namen importiert haben (die sys.path-Änderung).
Alle anderen Skripte laufen unverändert.