v1.4.0¶
v1.4.0 ist eine grundlegende Reorganisation der imlib. find_blobs() / find_markers() wurden für direktes Farbschwellenwert-Tracking neu geschrieben, viele eigenständige Bildmethoden wurden in Blob-Tupel zusammengefasst und mehrere Bildmethoden wurden umbenannt (subimg → copy, blit → replace, find_eyes → find_eye, compress → compressed). Zudem werden sensor.get_fb() / AGC-/AEC-Umschalter und ~60 Beispielskripte hinzugefügt. Dies ist ein stark brechendes Release — lies die nachfolgenden Breaking Changes.
Höhepunkte¶
Farbbasiertes Blob-Tracking —
find_blobs()nimmt Farbschwellenwerte direkt entgegen und gibt eine flache Liste von Blob-Tupeln zurück.Imlib-Aufräumarbeiten —
subimg()→copy(),blit()→replace(),find_eyes()→find_eye(),compress()→compressed().Sensor —
sensor.get_fb()und AGC-/AEC-Aktivierungsumschalter hinzugefügt.~60 Beispielskripte hinzugefügt/erweitert.
Breaking: die Blob-API, entfernte Bildmethoden und mehrere Umbenennungen — siehe die Breaking Changes.
Neue Funktionen¶
Sensor —
sensor.get_fb()(den letzten Snapshot-Framebuffer abrufen),sensor.set_gain_ctrl(enable)(AGC umschalten) undsensor.set_exposure_ctrl(enable)(AEC umschalten) hinzugefügt.Image — Bild-Indizierung (
img[i]) unterstützt nun sowohl das Lesen als auch das Schreiben von Pixeln (Graustufen / RGB565 / JPEG); ein In-place-image.compress()und einquality=-Schlüsselwort für die JPEG-Funktionen hinzugefügt;find_blobs()/find_markers()/find_features()geben nun eine leere (iterierbare) Liste statt eines Nicht-Listen-Werts zurück, wenn nichts gefunden wird.~60 Beispielskripte hinzugefügt (Board-Steuerung, Bildfilter, Farb-Tracking, Gesichts-/Augen-/Merkmalserkennung, WiFi-Shield) sowie ein zweites Beispiel zur Iris-Erkennung.
Weitere Änderungen und Verbesserungen¶
image.histeq()funktioniert nun auf RGB565-Bildern, nicht nur auf Graustufen.
Fehlerbehebungen¶
pyb.DACbeim Booten initialisiert, damit der DAC funktioniert (#121), ein defektesimage.dilate()behoben, die Null-Byte-Beschädigung in WINCclient.send(), die erneute Iteration beim Blob-Merge, einen Datei-Puffer-Reinitialisierungsfehler, der das Dateisystem nach der ersten Verwendung lahmlegte, die Thermopile-To_min-/To_max-Berechnung (#113) und einen Upstream-MicroPython-HAL-I2C-/DMA-Patch angewendet.
Hardware- und Board-Unterstützung¶
WiFi-Shield — WINC1500 auf Rev-B-Board-Dateien aktualisiert.
pyb.DAC— DAC-Peripheriegerät aktiviert.
Breaking API-Änderungen¶
Für Benutzer sichtbare API-Brüche zwischen v1.3.0 und v1.4.0. Geltungsbereich: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:
major — betrifft die meisten Skripte, die das Feature genutzt haben; du musst Code portieren.
minor — schmale API; betrifft nur Skripte, die sie genutzt haben.
Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn du nur deinen Code portieren möchtest, springe zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.
find_blobs() / find_markers() neu geschrieben (major)¶
image.find_blobs() / find_markers() wurden für farbbasiertes Tracking neu geschrieben: Du übergibst nun Farbschwellenwerte (und eine optionale Filterfunktion) direkt, anstatt auf einem vorsegmentierten Bild zu arbeiten, und das Ergebnis ist eine einzige flache Liste von 10-elementigen Blob-Tupeln (mit einem Farbcode-Feld) statt eines verschachtelten Baums pro Farbe. Überarbeite Farb-Tracking-Skripte so, dass sie Farbschwellenwerte übergeben und die flache Liste durchlaufen.
Eigenständige Bildmethoden entfernt (major)¶
image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() und image.pixels() wurden entfernt. Die Daten zu Schwerpunkt / Orientierung / Pixelanzahl sind nun als Felder der von find_blobs() zurückgegebenen Blob-Tupel verfügbar.
Commits: 9e5d379c1
Imlib-Methodenumbenennungen (major)¶
Mehrere Bildmethoden wurden umbenannt/überarbeitet: image.subimg() → image.copy(), image.blit() → image.replace() und image.blend() wurde an die anderen beiden Zwei-Bild-Operationen angepasst. Die Methoden image.scale() / scaled() / rainbow() wurden entfernt (rainbow wurde in das FIR-Modul verschoben). Aktualisiere die Aufrufe auf die neuen Namen.
Commits: b534dc6ff
find_eyes() in find_eye() umbenannt (minor)¶
image.find_eyes() wurde in image.find_eye() umbenannt und gibt nun ein 2-Tupel der Iris (x, y) statt des bisherigen Augen-Tupels zurück. Benenne den Aufruf um und passe die Verarbeitung des Rückgabewerts an.
Commits: 7a01a9bed
image.compress() in compressed() umbenannt (minor)¶
image.compress() (das ein neues JPEG-Bild zurückgab) wurde in image.compressed() umbenannt; das neue image.compress() komprimiert das Bild stattdessen in place und gibt None zurück. image.save() erhielt zudem ein quality=-Schlüsselwort und gibt nun None statt True zurück. Migriere img.compress(q) (das ein zurückgegebenes Bild erwartet) zu img.compressed(quality=q).
Commits: 367e5fdd3
Migrations-Checkliste¶
Für eine saubere Portierung auf v1.4.0 ist typischerweise Folgendes zu tun:
Überarbeite Farb-Tracking-Code so, dass er Farbschwellenwerte an
find_blobs()/find_markers()übergibt und die flache Blob-Tupel-Liste durchläuft (die find_blobs-Neuschreibung).Lies die Daten zu Schwerpunkt / Orientierung / Pixeln aus den Blob-Tupeln statt aus den entfernten eigenständigen Methoden (die entfernten Bildmethoden).
Benenne
subimg→copy,blit→replaceum, korrigiereblend()-Aufrufe und ersetzescale/scaled/rainbow(die imlib-Umbenennungen).Benenne
find_eyes()→find_eye()(die find_eye-Umbenennung) undcompress()→compressed()(die compress-Umbenennung) um.
Alle anderen Skripte laufen unverändert.