v4.5.1

v4.5.1 voegt tekenhints voor afbeeldingsoriëntatie/-verhouding toe, het rechtstreeks laden van afbeeldingen vanaf een bestandspad, een GC2145 groothoek-ioctl, en een nieuwe API voor de achtergrondverlichtingscontroller. Het herwerkt ook de Image()-constructor, de display-API’s, en het parseren van module-argumenten — lees de breaking changes hieronder.

Hoogtepunten

  • Tekenhintsdraw_image() heeft oriëntatie- (HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270) en verhoudingsschaling- (SCALE_ASPECT_KEEP/EXPAND/IGNORE) hints gekregen.

  • Afbeeldingen laden vanaf schijfdraw_image() / display.write() accepteren een bestandspad-string.

  • Achtergrondverlichtingsbesturing — nieuwe DACBacklight / PWMBacklight-klassen en een display-backlight=-argument.

  • Breaking: de Image()-constructor, de display-API’s, en het parseren van module-argumenten zijn gewijzigd — zie de breaking changes.

Nieuwe functies

  • draw_image()-oriëntatiehints — image.HMIRROR, image.VFLIP, image.TRANSPOSE, plus de gemaksopties image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • draw_image()-verhoudingshints — image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE voor passen / uitbreiden / uitrekken.

  • Paletconstantenimage.PALETTE_RAINBOW en image.PALETTE_IRONBOW (verplaatst naar de image-module).

  • Groothoekbeeld — nieuwe sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE-ioctls (op de GC2145, tot 5x sensorschaling).

  • Laden vanaf schijfdraw_image() en display.write() accepteren een bronafbeelding-bestandspad-string en laden die rechtstreeks vanuit de opslag.

  • Achtergrondverlichtingscontrollers — nieuwe DACBacklight- en PWMBacklight-klassen (importeerbaar vanuit display), en een keyword-only backlight=-argument op de SPI-/parallelle display-constructors.

Overige wijzigingen en verbeteringen

  • De ST7701 DSI-displaydriver is verplaatst naar zijn eigen st7701.py-module (nog steeds importeerbaar via from display import *) en is frozen op de Arduino Giga; de lsm9ds1 IMU-driver is frozen op de Arduino Nano 33 BLE Sense.

  • MT9V022- / MT9V034- (global-shutter) camera’s passen nu rijruiscorrectie toe voor een betere beeldkwaliteit.

  • Het i.MX RT USB-massaopslagvolume wordt nu gelabeld als een OpenMV-schijf.

Bugfixes

Camera en sensoren:

  • Hoekdetectie (find_keypoints() FAST/AGAST) hersteld op afbeeldingen hoger dan 480 rijen — de per-rij-buffer wordt nu gedimensioneerd op de hoogte van de afbeelding.

  • FSYNC-pin-ondersteuning toegevoegd voor frame-gesynchroniseerde snapshot() op i.MX RT (OpenMV RT1060), en verwisselde SPI4 MOSI/MISO-pinnen op de RT1060 hersteld.

Display en video:

  • De argumentvolgorde van de SPIDisplay-constructor gecorrigeerd (bgr, byte_swap, triple_buffer werden toegepast op de verkeerde parameters).

  • Beeldcorruptie van de TV-shield hersteld bij het tekenen van een afbeelding met een opgegeven rechthoek, en onjuiste MJPEG-framegrenzen bij het opnemen van geschaalde frames.

Netwerken:

  • De WINC WiFi AP-modus dwingt niet langer de verouderde WEP-only-beperking af — open en WPA AP-modi werken met correcte PSK-afhandeling.

Hardware- en boardondersteuning

  • OpenMV RT1060 — FSYNC-pin en gecorrigeerde SPI4-pinnen.

  • Arduino GIGA — QSPI-betrouwbaarheidsworkaround; ST7701-display frozen ingebouwd.

  • Arduino Nano 33 BLE Senselsm9ds1 IMU-driver frozen ingebouwd.

Breaking API-wijzigingen

Voor de gebruiker zichtbare API-breaks tussen v4.5.0 en v4.5.1. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is getagd met de impact ervan:

  • minor — beperkte API; heeft alleen invloed op scripts die het gebruikten.

  • behavior — dezelfde API, andere resultaten; controleer afgestemde scripts opnieuw.

Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar de diff ervan op GitHub.

Image()-constructor en display-API’s (minor)

De image.Image-constructor is herwerkt naar keyword-argumenten (height, pixformat, buffer=, copy_to_fb=); deze kan nu een afbeelding bouwen uit een bestaande bytearray/buffer, en voor gecomprimeerde formaten is een buffer vereist. display.write() is herwerkt: x_scale/y_scale nemen nu een float (schaalverhouding) of int (doelgrootte in pixels) en de afzonderlijke x_size/y_size-keywords zijn verwijderd. Het eerste positionele argument van WINC.connect() is hernoemd van essidssid, en de WINC WiFi-scanresultaten zijn gewijzigd naar (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID zijn nu bytes; BSSID is niet langer een geformatteerde MAC-string).

Commits: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

Achtergrondverlichtingsbereik, schaling, en keyword-only-argumenten (behavior)

Display.backlight() neemt nu een intensiteit van 0–100 (0 = uit, 100 = vol) in plaats van 0–255, en werpt een ValueError op buiten dat bereik. Integer x_scale/y_scale-waarden worden nu behandeld als een multiplicatieve schaalfactor (hetzelfde als floats) in plaats van een doelpixeldimensie — dit heeft invloed op fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display, en tv-schaling. Het parseren van argumenten in de modules sensor, fir, tof, tv, mjpeg, gif, imageio, tf, en audio is geüniformeerd, waardoor verschillende voorheen-positionele opties keyword-only zijn geworden (namen, standaardwaarden en gedrag zijn verder ongewijzigd).

Commits: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd

Migratiechecklist

Voor een schone port naar v4.5.1 is het typische werk:

  1. Werk de Image()-constructie bij naar de nieuwe keyword-vorm, schakel display.write() af van x_size/y_size, en hernoem WINC.connect() essidssid (verwerk de nieuwe bytes-gebaseerde scan-tuples) (de constructor-/display-/WINC-wijzigingen).

  2. Herschaal Display.backlight()-aanroepen naar 0–100, controleer elk gebruik van integer x_scale/y_scale opnieuw, en geef voorheen-positionele module-opties door als keywords (de gedragswijzigingen).