v4.0.0¶
v4.0.0 ist der große v3 → v4-Release. Er führt die moderne Multi-Frame-sensor-Pufferungs-API (Double-/Triple-Buffering und ein Video-FIFO), einen Frame-Complete-Callback, ein Bluetooth-Modul (NimBLE-Stack) mit Portenta-Unterstützung, den ersten MT9M114-Kameratreiber, MDMA-ausgelagerte Kameraerfassung, Bayer-/JPEG-Unterstützung in image.draw_image() sowie einen Sprung auf MicroPython 1.15 ein. Der Legacy-Streaming-Modus wurde entfernt und sensor.set_windowing() wurde überarbeitet — lies die nachstehenden Änderungen mit Bruchpotenzial.
Highlights¶
Multi-Frame-Pufferung —
sensorerhält Double-Buffering, Triple-Buffering und einen Video-FIFO-Modus für höhere, gleichmäßigere Bildraten.Frame-Complete-Callback — registriere einen Callback, der ausgelöst wird, wenn ein neues Einzelbild bereitsteht, für nicht-blockierende Erfassungs-Pipelines.
Bluetooth — ein
bluetooth-Modul, das auf dem NimBLE-Stack basiert und auf dem Arduino Portenta H7 aktiviert ist (mit einem BLE-Beispiel).MT9M114 — erster Kamerasensor-Treiber.
Schnellere Erfassung — MDMA-Auslagerung für die Kameradatenerfassung;
draw_image()akzeptiert nun Bayer- und JPEG-Quellen/-Ziele.MicroPython 1.15 — das gebündelte MicroPython wurde von 1.13 auf 1.15 aktualisiert.
Mit Bruchpotenzial: der Legacy-Streaming-Modus wurde entfernt und
sensor.set_windowing()wurde überarbeitet — siehe die Änderungen mit Bruchpotenzial.
Neue Funktionen¶
Sensor-Multi-Pufferung —
sensor.set_framebuffers()/sensor.get_framebuffers()und die ModiSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFOhinzugefügt, plussensor.get_frame_available()für Double-, Triple- und Video-FIFO-Erfassung.Frame-Complete-Callback —
sensor.set_frame_callback()hinzugefügt, sodass ein Python-Callback ausgeführt wird, wenn jedes neue Einzelbild fertiggestellt ist.Bluetooth — ein
bluetooth-Modul hinzugefügt, das auf dem NimBLE-Stack aufbaut (NimBLE-Submodul, CYW-BT-Treiber), aktiviert auf dem Arduino Portenta H7 mit einem BLE-Beispiel.MT9M114 — den ersten MT9M114-Kamerasensor-Treiber hinzugefügt.
draw_image — Debayering-Unterstützung und JPEG-Kopierunterstützung hinzugefügt, sodass
image.draw_image()Bayer- und JPEG-Quell-/-Zielbilder akzeptiert.MDMA-Erfassungsauslagerung — die Kameradatenerfassung wird für höheren Durchsatz auf MDMA ausgelagert.
Ein Farbpaletten-Argument kann nun durch Übergabe von
-1deaktiviert werden (daNoneals gültiges Argument reserviert ist).
Weitere Änderungen und Verbesserungen¶
Auf die neue Software-I2C-Implementierung umgestellt; an MicroPython-Upstream angeglichen; board-spezifische ulab-Konfiguration; grundlegende eingebaute Module für OpenMV 2 aktiviert; fairere Framebuffer-Auslesesperrung; Mutex-Unterstützung auf Cortex-M0/M0+ mit einem Lock-Timeout erweitert.
Fehlerbehebungen¶
Kamera und Bildverarbeitung:
Die FLIR-Lepton-Init-Zuverlässigkeit auf dem Pure-Thermal-Board, die ImageIO-JPEG-Puffer-/Pause-Behandlung, die HM01B0-vflip/hmirror-Einstellungen, das JPEG-Puffer-Flush, wenn ein Bild ungültig gemacht wird, und ein
cropped-Flag behoben, das gesetzt wurde, wenn die Framegröße ungültig war.
System und Konnektivität:
Das Leeren des USB-Befehls und den Reset-to-Bootloader-Befehl, die Mutex-Init, die UART-Taktquelle, das FatFS-Code-Page-Define, die WINC1500-Out-of-Band-ACK-Behandlung, das WiFi-Debugging und die Nano33-USB-PID behoben; dedizierte analoge Pads isoliert.
Hardware- und Board-Unterstützung¶
MT9M114-Kamerasensor (erster Treiber).
Arduino Portenta H7 — Bluetooth aktiviert (NimBLE) mit einem BLE-Beispiel.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — WiFi-Debug-Flag deaktiviert, wo nicht unterstützt; Blinky-Beispiel hinzugefügt; USB-PID-Korrektur.
API-Änderungen mit Bruchpotenzial¶
Für Benutzer sichtbare API-Brüche zwischen v3.9.4 und v4.0.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; du wirst mit ziemlicher Sicherheit Code portieren müssen.
minor — enge API; betrifft nur Skripte, die sie verwendet haben.
behavior — gleiche API, andere Ergebnisse; überprüfe abgestimmte Skripte erneut.
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.
Streaming-Modus entfernt (major)¶
Der Legacy-Sensor-Streaming-Modus wurde zugunsten der neuen Multi-Frame-Pufferungs-API entfernt. Code, der den Streaming-Modus aktiviert hat, muss auf sensor.set_framebuffers() mit DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO umsteigen und die Erfassung stattdessen mit sensor.snapshot() / sensor.get_frame_available() steuern.
Commits: a42f3a647
sensor.set_windowing() überarbeitet (behavior)¶
sensor.set_windowing() wurde deutlich flexibler gestaltet: Es akzeptiert nun mehrere Argumentformen (ein Region-Tupel, oder Breite/Höhe zentriert, oder x, y, w, h) und löst das Fenster relativ zur aktuellen Auflösung auf. Skripte, die Windowing-Argumente in der alten festen Form übergeben haben, wählen möglicherweise eine andere Region aus und sollten erneut überprüft werden.
Commits: 3e9c43554
MicroPython 1.13 → 1.15 (behavior)¶
Der gebündelte MicroPython-Kern wurde von 1.13 auf 1.15 (über 1.14) aktualisiert. Das Verhalten der Standardbibliothek und der Sprache folgt MicroPython 1.15 Upstream; überprüfe Skripte erneut, die von versionsspezifischem micropython- / Standardmodul-Verhalten abhängen.
ImageIO-Argument update_jpeg_buffer entfernt (minor)¶
Die ImageIO-JPEG-Puffer-Aktualisierung wurde so überarbeitet, dass der Puffer aus dem Bildquellen-Argument abgeleitet wird, und das explizite update_jpeg_buffer-Argument wurde entfernt. Skripte, die update_jpeg_buffer an ImageIO übergeben haben, müssen dieses Argument entfernen.
Commits: 5c6937bd1
Migrations-Checkliste¶
Für eine saubere Portierung auf v4.0.0 fällt typischerweise folgende Arbeit an:
Ersetze jede Verwendung des entfernten Streaming-Modus durch die neue Multi-Pufferungs-API
sensor.set_framebuffers()(Streaming-Modus entfernt).Überprüfe
sensor.set_windowing()-Aufrufe gegen die überarbeitete, flexiblere Argumentbehandlung erneut (die Windowing-Änderung).Validiere Skripte, die von versionsspezifischem MicroPython-Verhalten abhängen, erneut gegen MicroPython 1.15 (der MicroPython-Sprung).
Entferne das
update_jpeg_buffer-Argument aus ImageIO-Aufrufen (die ImageIO-Änderung).
Alle anderen Skripte laufen unverändert weiter.