v4.5.3¶
v4.5.3 ist ein umfangreiches Release: OV5640-Autofokus, kantengeglättetes Linienzeichnen, ein in den Mainline übernommener Hardware-JPEG-Decoder, große Funktionszuwächse für den i.MX RT (RT1060) sowie eine breite Reihe von Kamera-/ISP-Korrekturen. Mehrere selten genutzte Bildmethoden wurden entfernt und einige ISP-/Display-APIs geändert — lies die nachfolgenden Breaking Changes.
Höhepunkte¶
OV5640-Autofokus — aktiviert auf OpenMV 4 / 4 Plus / RT1060 (
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), mit einem Beispiel.Kantengeglättetes
draw_line()und ein in den Mainline übernommener STM32-Hardware-JPEG-Decoder (schnellere JPEG-Dekomprimierung).OpenMV RT1060 erhielt ulab, ISP-Operationen,
set_framerate()/set_frame_callback(), einen deutlich größeren Framebuffer sowie den CAN-Treiber.Breaking:
Image.div()/cartoon()/mul()wurden entfernt und einige ISP-/Display-APIs geändert — siehe die Breaking Changes.
Neue Funktionen¶
OV5640-Autofokus — die Autofokus-Firmware ist auf OPENMV4, OPENMV4P und OPENMV RT1060 aktiviert; löse sie mit
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)aus. Ein neues Beispiel07-Sensor-Control/autofocus.pywurde hinzugefügt.Kantengeglättetes Linienzeichnen —
draw_line()erhielt Kantenglättung.Benutzerdefinierte SPI-Display-Controller —
SPIDisplayakzeptiert nun eincontroller=-Schlüsselwort und stellt einenbus_write-Hook für benutzerdefinierte Init-/Befehlssequenzen bereit.Erweiterung von
Image.ccm()— akzeptiert nun verschachtelte 3x3-/4x3-/3x4-/4x4-Matrizen und ulab-Arrays (mit einer optionalen Offset-Zeile pro Kanal); ein Beispiel zur Farbkorrektur wurde hinzugefügt.i.MX RT JPEG-Aufnahme —
sensor.JPEG-Aufnahme auf Arduino Portenta/Nicla Vision/Giga, plusset_framerate()undset_frame_callback()auf dem mimxrt-Port.TFLite-Modellvalidierung — Modelle tragen nun einen Operator-Reihenfolge-Hash und eine Operator-Set-Größe.
WiFi — CYW43-Sicherheitsmodus-Konstanten hinzugefügt; neue i.MX RT-Board-Control-Beispielskripte (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).
Weitere Änderungen und Verbesserungen¶
MicroPython auf 1.22 aktualisiert; CMSIS auf 5.9.0 aktualisiert.
In den Mainline übernommener STM32-Hardware-JPEG-Decoder — schnellere JPEG-Dekomprimierung über den On-Chip-Codec.
Optimiertes
Image.invert()/negate()sowie binäre/mathematische Bildoperationen (CMSIS-Intrinsics).Die Bibliotheken
rpcundvl53l1xwurden portabel gemacht (verwendenmachine/timestattpyb), sodass sie auf Nicht-STM32-Ports laufen.DMA-beschleunigtes Framebuffer-memcpy auf OpenMV H7 / H7 Plus / Pro / Pure Thermal sowie Arduino Giga / Nicla Vision / Portenta H7; STM32 scannt I2C-Geräte nun einmal pro Scan für schnelleres Booten.
Fehlerbehebungen¶
Kamera und Sensoren:
STM32-Kamera-XCLK auf ein echtes 50%-Tastverhältnis korrigiert sowie einen Fehler behoben, wenn die Kameratakt-Frequenz auf null gesetzt wird; Bayer-Zuschnitt+Transponierung, YUV422-Farbverschiebung und
set_windowing()auf dem mimxrt-Port korrigiert.GC2145-Chip-ID-Probe sowie hmirror/vflip bei gedrehter Montage korrigiert; PAJ6100 auf dem RT1062 und einen PixArt PAJ7620/PAW3902-SPI-Pufferüberlauf behoben.
Bildverarbeitung:
find_rects()-roi-Clipping,morph()-Trunkierung gebrochener Offsets,image.gamma()-Kontrast-/Helligkeitsstandardwerte,get_threshold()-A/B-Offsets bei RGB565 sowie die JPEG-Dekodierung von Abmessungen, die kein Vielfaches von 8 sind, korrigiert.
System und Bibliotheken:
machine.LED.value()ohne Argument gibt nun den LED-Zustand zurück, statt ihn zu löschen; SPI-SSEL-Deinit auf einem gemeinsam genutzten Bus,machine.deepsleep()auf dem RT1062, ein TF-Absturz bei fehlenden Operatoren sowie die WINC1500/ninaw10-NIC-Auto-Aktivierung beiconnect()korrigiert.
Hardware- und Board-Unterstützung¶
OpenMV RT1060 — ulab und ISP-Operationen aktiviert, größerer Framebuffer (10M→20M) / fb_alloc (2M→11M), CAN-Treiber wiederhergestellt, mehr Heap.
Arduino GIGA — GC2145-Kamera-Unterstützung, mit GC2145/OV5640-Autoerkennung (sie teilen sich eine I2C-Adresse).
i.MX RT —
sensor.JPEG-Aufnahmeunterstützung.
Breaking API-Änderungen¶
Für Benutzer sichtbare API-Brüche zwischen v4.5.2 und v4.5.3. 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 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.
Entfernte Bildmethoden (minor)¶
Image.div(), Image.cartoon() (und sein Beispiel) sowie Image.mul() wurden entfernt.
Display-Modul-API (minor)¶
Der veraltete udisplay-Modulnamen-Fallback wurde entfernt — das Modul wird nur noch als display registriert. Die nur für DSI verfügbaren Methoden dsi_write() / dsi_read() wurden durch bus_write() / bus_read() ersetzt, die nun auf allen Display-Controllern verfügbar sind.
MQTT- und tf.regression-API-Änderungen (minor)¶
Der MQTTClient der mqtt-Bibliothek wurde überarbeitet: port ist nun erforderlich, neue Konstruktor-Schlüsselwörter ssl_params / callback sowie ein timeout-Argument bei connect() wurden hinzugefügt, die alten Standardwerte ssl= / port=0 wurden entfernt, und check_msg() ist nun nicht-blockierend. tf.regression() wurde neu geschrieben — seine Signatur lautet nun regression(model, array) und verarbeitet 1D-/2D-/3D- und quantisierte (int8) Modelle.
ISP-/Sensor-Verhaltensänderungen (behavior)¶
Image.awb() wurde überarbeitet — Gray-World (Standard) vs. White-Patch (max=True) ist nun explizit, und das max-Argument sowie die Argumente gamma / contrast / brightness von Image.gamma() sind nun nur als Schlüsselwörter zulässig (positionale Aufrufe müssen angepasst werden). Das Transponieren von Bildern ist für YUV422 nun deaktiviert (es erzeugte zuvor falsche Ausgaben) und die YUV422-Farbverschiebung wurde korrigiert, um mit Bayer übereinzustimmen. Der STM32-JPEG-Pfad löst nun bei einer JPEG-Geometrie-Diskrepanz einen Fehler aus, statt ein beschädigtes Bild zu erzeugen, und der WiFi-AP-Modus wendet nun einen Standard-Sicherheitsmodus auf den STM32- und i.MX RT-Ports an.
Commits: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af
Migrations-Checkliste¶
Für eine saubere Portierung auf v4.5.3 ist typischerweise Folgendes zu tun:
Verwende
Image.div()/cartoon()/mul()nicht mehr (die entfernten Methoden).Importiere das Display-Modul als
displayund wechsle vondsi_write/dsi_readzubus_write/bus_read(die Display-API-Änderung).Aktualisiere die
MQTTClient-Konstruktion (portist erforderlich;ssl_params/callback) und alletf.regression()-Aufrufe (die Bibliotheks-API-Änderungen).Übergib
awb()maxundgamma()gamma/contrast/brightnessals Schlüsselwortargumente und überprüfe die YUV422-/Transponierungs- sowie AP-Modus-Sicherheitsannahmen erneut (die ISP-/Sensor-Änderungen).