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 (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). 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-Trackingfind_blobs() nimmt Farbschwellenwerte direkt entgegen und gibt eine flache Liste von Blob-Tupeln zurück.

  • Imlib-Aufräumarbeitensubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Sensorsensor.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

  • Sensorsensor.get_fb() (den letzten Snapshot-Framebuffer abrufen), sensor.set_gain_ctrl(enable) (AGC umschalten) und sensor.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 ein quality=-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.DAC beim Booten initialisiert, damit der DAC funktioniert (#121), ein defektes image.dilate() behoben, die Null-Byte-Beschädigung in WINC client.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.

Commits: d1ff36602, 16daeb83a

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:

  1. Ü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).

  2. Lies die Daten zu Schwerpunkt / Orientierung / Pixeln aus den Blob-Tupeln statt aus den entfernten eigenständigen Methoden (die entfernten Bildmethoden).

  3. Benenne subimgcopy, blitreplace um, korrigiere blend()-Aufrufe und ersetze scale / scaled / rainbow (die imlib-Umbenennungen).

  4. Benenne find_eyes()find_eye() (die find_eye-Umbenennung) und compress()compressed() (die compress-Umbenennung) um.

Alle anderen Skripte laufen unverändert.