v4.5.9¶
v4.5.9 bringt Roh-Vorschau-Streaming für Boards ohne Hardware-JPEG-Encoder, Hardware-Sensor-Cropping zur Freigabe von mehr RAM, schnelleres Helium-beschleunigtes Debayering und eine Reihe von Kamera-/USB-Debug-Korrekturen. Es ändert außerdem die AprilTag-Ergebnis-API und den Standardsatz der AprilTag-Familien, lesen Sie daher die Breaking Changes weiter unten.
Höhepunkte¶
Roh-Vorschau-Streaming — Boards ohne Hardware-JPEG-Encoder können jetzt herunterskalierte Roh-Einzelbilder an die IDE/den Host senden, statt bei der Vorschau zu scheitern.
Hardware-Sensor-Cropping — das Setzen einer kleineren Frame-Größe reduziert jetzt den Speicher pro Puffer und gibt RAM für
fb_alloc()frei.Schnelleres Debayering — die Bayer→RGB-/Graustufen-Konvertierung ist jetzt auf Cortex-M55-Boards mit Helium-SIMD beschleunigt.
Breaking: das AprilTag-Ergebnisobjekt wurde auf Attributzugriff umgestellt und der Standardsatz der AprilTag-Familien wurde reduziert (siehe die AprilTag-Änderungen und die AprilTag-Familien-Änderung).
Neue Funktionen¶
Roh-Vorschau-Streaming — Boards ohne Hardware-JPEG-Encoder können JPEG umgehen und herunterskalierte Roh-Einzelbilder (begrenzt auf ~60 KB) an die IDE/den Host streamen, sodass die Live-Vorschau auf diesen Boards funktioniert.
Weitere Änderungen und Verbesserungen¶
Hardware-Cropping ist jetzt auf allen STM32-/NXP-Boards aktiviert (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Wenn eine Frame-Größe oder ein Fenster gesetzt wird, wird der Speicher pro Puffer auf die zugeschnittene Größe reduziert, wodurch mehr RAM für
fb_alloc()frei wird.Schnelleres Debayering — die Bayer→RGB565-/Graustufen-Konvertierung ist jetzt auf Cortex-M55-Boards (z. B. RT1060) mit ARM Helium/MVE-SIMD beschleunigt, mit einem gemeinsam genutzten SIMD-JPEG-Encoder-Pfad.
Schnelleres IDE-Debugging — der Debugger überträgt Daten jetzt nach Möglichkeit direkt aus dem USB-Stack und vermeidet so eine zusätzliche Kopie.
MicroPython-Submodul aktualisiert — Boards können den TinyUSB-CDC-Puffer in der Größe anpassen, dazu GC- und Build-Regel-Korrekturen.
Fehlerbehebungen¶
Kamera und Sensoren:
Korrektur des OV7725-Bayer-/CFA-Musters (GBRG → BGGR), wodurch die debayerte Farbausgabe auf OV7725-Kameras korrigiert wird; die OV7725 meldet jetzt das Bayer-Pixelformat, und Bayer-only-Sensoren melden jetzt eine Quelltiefe von 1 Byte pro Pixel.
Behebung der Berechnung der Roh-/Bayer-Framebuffer-Größe.
Maschinelles Lernen:
TensorFlow Lite Micro verwendet jetzt den freien Speicher des GC-Heaps bei der Dimensionierung der temporären Tensor-Arena, wodurch Allokationsfehler beim Modell-Laden auf Boards mit begrenztem Framebuffer-Speicher verhindert werden.
Host / IDE:
Behebung der USB-Debug-CDC-Pufferbehandlung auf TinyUSB-Boards für zuverlässigeren seriellen/Debug-Durchsatz.
tools/pyopenmv: RGB565-Bytereihenfolge korrigiert, einscale-Argument hinzugefügt, und das Framebuffer-Tool meldet jetzt Bildgröße/-format.
Hardware- und Board-Unterstützung¶
OV7725 meldet jetzt das Bayer-Pixelformat (korrekte Roh-/CFA-Behandlung).
Hardware-Cropping über die gesamte STM32-/NXP-Board-Reihe aktiviert.
Breaking-API-Änderungen¶
Für Benutzer sichtbare API-Brüche zwischen v4.5.8 und v4.5.9. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:
minor — schmale API; betrifft nur Skripte, die es verwendet haben.
behavior — gleiche API, andere Ergebnisse; getunte Skripte erneut prüfen.
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.
AprilTag-Ergebnisobjekte und set_buffers (minor)¶
AprilTag-Ergebnisse von find_apriltags() stellen ihre Daten jetzt als Attribute statt als Methoden bereit — verwenden Sie tag.cx, tag.cy, tag.rotation, tag.family, tag.corners statt tag.cx(), tag.family() usw. Neue Accessoren name (Familienname als String) und Float-genaue cxf / cyf wurden hinzugefügt.
Davon getrennt änderte sich die automatische Video-Puffer-Konfiguration: set_buffers ersetzt auto_adjust — übergeben Sie -1, um bis zu drei Puffer in Frame-Größe zu verwenden (oder so viele, wie passen), und 1, um den gesamten Framebuffer zu verwenden. Die Puffer-Dimensionierung ist jetzt Bits-pro-Pixel-bewusst, sodass für 1-bpp-Formate mehr Puffer allokiert werden können.
ble_advertising und RPC-über-Netzwerk entfernt (minor)¶
Die Hilfsbibliothek ble_advertising und das Beispiel ble_temperature.py wurden entfernt — verwenden Sie stattdessen aioble (ein aioble-Temperaturbeispiel ist beigefügt). Die RPC-Netzwerk-Master-/Slave-Klassen wurden aus rpc.py entfernt.
AprilTag-Familien standardmäßig deaktiviert (behavior)¶
AprilTag-Familien sind jetzt einzeln zur Compile-Zeit auswählbar, und die ungenutzten sind standardmäßig deaktiviert. Auf Standard-Boards erkennt find_apriltags() jetzt nur noch die Familie TAG36H11, sofern die Firmware nicht mit aktivierten anderen Familien neu gebaut wird. Skripte, die auf einem Standard-Build auf andere Familien (TAG16H5, TAG25H9, …) angewiesen sind, hören stillschweigend auf, sie zu erkennen.
Commit: effe12f2c
Migrations-Checkliste¶
Für eine saubere Portierung auf v4.5.9 ist typischerweise folgende Arbeit nötig:
Den AprilTag-Ergebniszugriff von Methodenaufrufen auf Attribute umstellen (
tag.cx()→tag.cx) undauto_adjustaufset_buffersumstellen (die AprilTag-/Puffer-Änderungen).ble_advertisingdurchaiobleersetzen und jegliche RPC-Netzwerk-Master-/Slave-Nutzung entfernen (die Entfernungen).Wenn Sie auf einem Standard-Build andere AprilTag-Familien als
TAG36H11verwenden, beachten Sie, dass sie standardmäßig nicht mehr erkannt werden (die AprilTag-Familien-Änderung).