v4.5.1¶
v4.5.1 fügt Hinweise zur Bildausrichtung/-seitenverhältnis beim Zeichnen, das Laden von Bildern direkt aus einem Dateipfad, ein GC2145-Weitwinkel-ioctl und eine neue Hintergrundbeleuchtungs-Controller-API hinzu. Außerdem werden der Image()-Konstruktor, die display-APIs und das Parsen von Modulargumenten überarbeitet — lies die inkompatiblen Änderungen unten nach.
Highlights¶
Zeichenhinweise —
draw_image()hat Hinweise zur Ausrichtung (HMIRROR/VFLIP/TRANSPOSE,ROTATE_90/180/270) und zur Seitenverhältnis-Skalierung (SCALE_ASPECT_KEEP/EXPAND/IGNORE) erhalten.Bilder von Datenträger laden —
draw_image()/display.write()akzeptieren einen Dateipfad-String.Hintergrundbeleuchtungssteuerung — neue Klassen
DACBacklight/PWMBacklightund ein Display-Argumentbacklight=.Inkompatibel: der
Image()-Konstruktor, diedisplay-APIs und das Parsen von Modulargumenten haben sich geändert — siehe die inkompatiblen Änderungen.
Neue Funktionen¶
draw_image()-Ausrichtungshinweise —image.HMIRROR,image.VFLIP,image.TRANSPOSEsowie die komfortablenimage.ROTATE_90/ROTATE_180/ROTATE_270.draw_image()-Seitenverhältnishinweise —image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNOREfür Einpassen / Ausfüllen / Strecken.Paletten-Konstanten —
image.PALETTE_RAINBOWundimage.PALETTE_IRONBOW(in das image-Modul verschoben).Weites Sichtfeld — neue ioctls
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDE(auf dem GC2145, bis zu 5x Sensorskalierung).Von Datenträger laden —
draw_image()unddisplay.write()akzeptieren einen Dateipfad-String für ein Quellbild und laden es direkt aus dem Speicher.Hintergrundbeleuchtungs-Controller — neue Klassen
DACBacklightundPWMBacklight(importierbar ausdisplay) sowie ein reines Schlüsselwortargumentbacklight=bei den SPI-/Parallel-Display-Konstruktoren.
Weitere Änderungen und Verbesserungen¶
Der ST7701-DSI-Display-Treiber wurde in ein eigenes Modul
st7701.pyverschoben (weiterhin viafrom display import *importierbar) und ist auf dem Arduino Giga eingefroren; derlsm9ds1-IMU-Treiber wurde auf dem Arduino Nano 33 BLE Sense eingefroren.MT9V022- / MT9V034-Kameras (Global Shutter) wenden nun eine Zeilenrausch-Korrektur für bessere Bildqualität an.
Das i.MX RT-USB-Massenspeicher-Volume wird jetzt als OpenMV-Datenträger gekennzeichnet.
Fehlerbehebungen¶
Kamera und Sensoren:
Behoben wurde die Eckenerkennung (
find_keypoints()FAST/AGAST) bei Bildern höher als 480 Zeilen — der Puffer pro Zeile wird nun an die Bildhöhe angepasst dimensioniert.FSYNC-Pin-Unterstützung für einzelbildsynchronisierte
snapshot()auf i.MX RT (OpenMV RT1060) hinzugefügt und vertauschte SPI4-MOSI/MISO-Pins auf dem RT1060 behoben.
Display und Video:
Die Argumentreihenfolge des
SPIDisplay-Konstruktors korrigiert (bgr,byte_swap,triple_bufferwurden den falschen Parametern zugeordnet).Behoben wurden die Bildkorruption beim TV-Shield, wenn ein Bild mit einem angegebenen Rechteck gezeichnet wird, sowie falsche MJPEG-Einzelbildgrenzen beim Aufzeichnen skalierter Einzelbilder.
Netzwerk:
Der WINC-WLAN-AP-Modus erzwingt nicht mehr die veraltete WEP-only-Einschränkung — offene und WPA-AP-Modi funktionieren mit korrekter PSK-Behandlung.
Hardware- und Board-Unterstützung¶
OpenMV RT1060 — FSYNC-Pin und korrigierte SPI4-Pins.
Arduino GIGA — QSPI-Zuverlässigkeits-Workaround; ST7701-Display eingefroren.
Arduino Nano 33 BLE Sense —
lsm9ds1-IMU-Treiber eingefroren.
Inkompatible API-Änderungen¶
Für Benutzer sichtbare API-Brüche zwischen v4.5.0 und v4.5.1. 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; getunte Skripte erneut prüfen.
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.
Image()-Konstruktor und display-APIs (minor)¶
Der image.Image-Konstruktor wurde auf Schlüsselwortargumente umgestellt (height, pixformat, buffer=, copy_to_fb=); er kann nun ein Bild aus einem vorhandenen bytearray/Puffer aufbauen, und für komprimierte Formate ist ein Puffer erforderlich. display.write() wurde überarbeitet: x_scale/y_scale nehmen jetzt entweder einen Float (Skalierungsverhältnis) oder ein Int (Zielgröße in Pixeln), und die separaten Schlüsselwörter x_size/y_size wurden entfernt. Das erste positionsbasierte Argument von WINC.connect() wurde von essid → ssid umbenannt, und die WINC-WLAN-Scan-Ergebnisse wurden zu (ssid_bytes, bssid_bytes, channel, rssi, security, N) geändert (SSID/BSSID sind jetzt Bytes; BSSID ist nicht mehr ein formatierter MAC-String).
Hintergrundbeleuchtungsbereich, Skalierung und reine Schlüsselwortargumente (behavior)¶
Display.backlight() nimmt jetzt eine Intensität von 0–100 (0 = aus, 100 = voll) statt 0–255 und löst bei Werten außerhalb des Bereichs einen ValueError aus. Ganzzahlige x_scale/y_scale-Werte werden nun als multiplikativer Skalierungsfaktor behandelt (genauso wie Floats) und nicht mehr als Zielpixeldimension — dies betrifft fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display und die tv-Skalierung. Das Parsen von Argumenten wurde über die Module sensor, fir, tof, tv, mjpeg, gif, imageio, tf und audio vereinheitlicht, wodurch mehrere zuvor positionsbasierte Optionen zu reinen Schlüsselwortargumenten wurden (Namen, Standardwerte und Verhalten sind ansonsten unverändert).
Commits: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
Migrations-Checkliste¶
Für eine saubere Portierung auf v4.5.1 fällt typischerweise folgende Arbeit an:
Aktualisiere die
Image()-Konstruktion auf die neue Schlüsselwortform, stelledisplay.write()vonx_size/y_sizeum und benenne beiWINC.connect()essid→ssidum (behandle die neuen bytebasierten Scan-Tupel) (die Konstruktor-/Display-/WINC-Änderungen).Skaliere
Display.backlight()-Aufrufe auf 0–100 neu, überprüfe jede ganzzahligex_scale/y_scale-Verwendung erneut und übergib zuvor positionsbasierte Moduloptionen als Schlüsselwörter (die Verhaltensänderungen).