v2.5.0

v2.5.0 ist ein funktionsreiches Imaging-Release: Es fügt find_rects(), find_circles(), get_regression() (Linien-/Regressions-Anpassung), find_number() (LeNet-Ziffern), die Stream-Klassen ImageWriter / ImageReader, sensor.flush() / width() / height() sowie pyb.RTC-Unterstützung hinzu. Das Laden von Bildern ist jetzt Framebuffer-gestützt — lesen Sie die nachstehenden Änderungen mit Kompatibilitätsbruch.

Höhepunkte

  • image.find_rects() — Rechteck-/Quad-Detektor mit Eckpunkt-Ausgabe.

  • image.find_circles() — Hough-Kreiserkennung.

  • image.get_regression() — Linienanpassung nach kleinsten Quadraten und robust (Theil-Sen).

  • image.find_number() — LeNet-Ziffernerkennung.

  • ImageWriter / ImageReader — Bild-Streams aufzeichnen und wiedergeben.

  • pyb.RTC-Unterstützung, plus sensor.flush() / sensor.width() / sensor.height().

  • Kompatibilitätsbruch: Das Laden von Bildern ist jetzt Framebuffer-gestützt und löst eine Ausnahme aus, wenn das Bild zu groß ist — siehe die Änderungen mit Kompatibilitätsbruch.

Neue Funktionen

  • Merkmalserkennungimage.find_rects() (AprilTag-Quad-Detektor; Rect-Objekte mit x / y / w / h / corners / magnitude), image.find_circles() (Hough), image.get_regression() (kleinste Quadrate + robuste Theil-Sen-Linienanpassung) und image.find_number() (LeNet-Ziffernerkennung) hinzugefügt, jeweils mit Beispielskripten.

  • Ergebnis-Eckpunkte — ein corners-Attribut zu den Ergebnisobjekten für QR-Code / AprilTag / Data-Matrix / Barcode hinzugefügt.

  • Bild-Streams — die Klassen image.ImageWriter / image.ImageReader (16-Byte-ausgerichtetes Chunk-Format) mit den Beispielen image_writer.py / image_reader.py hinzugefügt.

  • Sensorsensor.flush() (den Framebuffer ohne Schnappschuss an die IDE übergeben) und sensor.width() / sensor.height() hinzugefügt.

  • pyb.RTC — RTC-Unterstützung mit einem rtc.py-Beispiel aktiviert.

  • Eine Katzengesichts-Haar-Cascade und ein Servo-Shield-Beispiel (PCA9685) hinzugefügt; das Host-Tool openmv-cascade.py erhielt Unterstützung für das neue OpenCV-XML-Cascade-Format.

Weitere Änderungen und Verbesserungen

  • Der Framebuffer wurde umgestaltet, sodass copy_to_fb-Bildmethoden die IDE-Vorschau aktualisieren; HaarCascade()-Pfade benötigen kein führendes / mehr (built-in vs. Datei wird automatisch erkannt); GIF-/MJPEG-Aufnahme unterstützt jetzt VGA (und BAYER-GIFs); die integrierte README.txt wurde aktualisiert und die Treiberdatei openmv.inf wird auf einem frischen Dateisystem nicht mehr erstellt.

Fehlerkorrekturen

Bildverarbeitung:

  • Die Stimmen-Akkumulation von find_circles(), den rho-Versatz von get_regression() bei einem ROI und ein Speicherleck, das Segment-Zusammenführen von find_lines(), die Winkelmittelung von find_blobs() und die Standard-Farbgrenzen (am wenigsten restriktiv), die ORB-Schlüsselpunkt-Sortierstabilität / Deskriptor-Reihenfolge und das Matched-Flag sowie das gepufferte Laden der Haar-Cascade (nicht ausgerichtete Lesevorgänge) behoben.

System:

  • pyb-Servo 3 (P9) (#256) aktiviert, die RTC-Initialisierung behoben, das UART-Zeichen-Timeout erhöht (#240) und das nicht initialisierte „enabled“-Flag des Sensor-Framebuffers behoben.

Hardware- und Board-Unterstützung

  • pyb.RTC-Unterstützung und pyb-Servo 3 (P9); Servo-Shield-Beispiel (PCA9685).

API-Änderungen mit Kompatibilitätsbruch

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

Die Änderung mit Kompatibilitätsbruch ist eine behavior-Änderung (gleiche API, anderes Ergebnis) — betroffene Skripte erneut prüfen. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.

Das Laden von Bildern ist Framebuffer-gestützt (behavior)

image.Image / das Laden von Bildern kopiert das geladene Bild jetzt in den Haupt-Framebuffer und löst eine Ausnahme aus, wenn das Bild zu groß ist, um hineinzupassen. Ladevorgänge, die zuvor in einen Heap-Puffer erfolgreich waren, können jetzt fehlschlagen — stellen Sie sicher, dass geladene Bilder in den Framebuffer passen (oder behandeln Sie den neuen Fehler).

Commits: 87d53385a

Migrations-Checkliste

Stellen Sie sicher, dass geladene Bilder in den Framebuffer passen (oder fangen Sie den neuen Fehler „image too large“ ab), wo Sie zuvor auf Heap-gestützte Bildladevorgänge angewiesen waren (die Bildlade-Änderung). Alle anderen Skripte laufen unverändert.