v4.5.1

v4.5.1 lägger till rithintar för bildorientering/bildförhållande, inläsning av bilder direkt från en filsökväg, en GC2145-ioctl för brett synfält samt ett nytt API för bakgrundsbelysningsstyrning. Den omarbetar även konstruktorn Image(), display-API:erna och tolkningen av modulargument — läs de brytande ändringarna nedan.

Höjdpunkter

  • Rithintardraw_image() fick hintar för orientering (HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270) och bildförhållandeskalning (SCALE_ASPECT_KEEP/EXPAND/IGNORE).

  • Läs in bilder från diskdraw_image() / display.write() accepterar en sträng med filsökväg.

  • Bakgrundsbelysningsstyrning — nya klasser DACBacklight / PWMBacklight och ett display-argument backlight=.

  • Brytande: konstruktorn Image(), display-API:erna och tolkningen av modulargument ändrades — se de brytande ändringarna.

Nya funktioner

  • Orienteringshintar för draw_image()image.HMIRROR, image.VFLIP, image.TRANSPOSE, plus de bekväma image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • Bildförhållandehintar för draw_image()image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE för anpassa / expandera / sträcka ut.

  • Palettkonstanterimage.PALETTE_RAINBOW och image.PALETTE_IRONBOW (flyttade in i image-modulen).

  • Brett synfält — nya ioctls sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE (på GC2145, upp till 5x sensorskalning).

  • Läs in från diskdraw_image() och display.write() accepterar en sträng med filsökväg till källbilden och läser in den direkt från lagring.

  • Bakgrundsbelysningsstyrenheter — nya klasser DACBacklight och PWMBacklight (importerbara från display), samt ett endast-nyckelord-argument backlight= på SPI-/parallelldisplayens konstruktorer.

Övriga ändringar och förbättringar

  • ST7701 DSI-displaydrivrutinen flyttades till sin egen st7701.py-modul (fortfarande importerbar via from display import *) och är fryst på Arduino Giga; lsm9ds1 IMU-drivrutinen frystes på Arduino Nano 33 BLE Sense.

  • MT9V022 / MT9V034 (global slutare) kameror tillämpar nu radbruskorrigering för bättre bildkvalitet.

  • i.MX RT USB-masslagringsvolymen märks nu som en OpenMV-disk.

Buggfixar

Kamera och sensorer:

  • Åtgärdade hörndetektering (find_keypoints() FAST/AGAST) på bilder högre än 480 rader — bufferten per rad dimensioneras nu efter bildens höjd.

  • Lade till stöd för FSYNC-stift för bildrutesynkroniserad snapshot() på i.MX RT (OpenMV RT1060), och åtgärdade omkastade SPI4 MOSI/MISO-stift på RT1060.

Display och video:

  • Korrigerade argumentordningen i SPIDisplay-konstruktorn (bgr, byte_swap, triple_buffer tillämpades på fel parametrar).

  • Åtgärdade bildkorruption på TV-shield vid ritning av en bild med en angiven rektangel, samt felaktiga MJPEG-bildrutegränser vid inspelning av skalade bildrutor.

Nätverk:

  • WINC WiFi AP-läge framtvingar inte längre den föråldrade WEP-endast-begränsningen — öppna och WPA AP-lägen fungerar med korrekt PSK-hantering.

Hårdvaru- och kortstöd

  • OpenMV RT1060 — FSYNC-stift och korrigerade SPI4-stift.

  • Arduino GIGA — kringgående för QSPI-tillförlitlighet; ST7701-display infryst.

  • Arduino Nano 33 BLE Senselsm9ds1 IMU-drivrutin infryst.

Brytande API-ändringar

Användarsynliga API-brott mellan v4.5.0 och v4.5.1. Omfattning: Python C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är taggad med sin påverkan:

  • minor — smalt API; påverkar endast skript som använde det.

  • behavior — samma API, annat resultat; kontrollera om intrimmade skript på nytt.

Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migrationschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

Konstruktorn Image() och display-API:erna (minor)

Konstruktorn image.Image omarbetades till nyckelordsargument (height, pixformat, buffer=, copy_to_fb=); den kan nu bygga en bild från en befintlig bytearray/buffert, och en buffert krävs för komprimerade format. display.write() omarbetades: x_scale/y_scale tar nu en float (skalförhållande) eller int (målstorlek i pixlar) och de separata nyckelorden x_size/y_size togs bort. Det första positionsargumentet i WINC.connect() döptes om essidssid, och WINC WiFi-skanningsresultat ändrades till (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID är nu bytes; BSSID är inte längre en formaterad MAC-sträng).

Commits: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

Bakgrundsbelysningsintervall, skalning och endast-nyckelord-argument (behavior)

Display.backlight() tar nu en intensitet 0–100 (0 = av, 100 = full) i stället för 0–255, och kastar ValueError utanför intervallet. Heltalsvärden för x_scale/y_scale behandlas nu som en multiplikativ skalfaktor (samma som floats) i stället för en målpixeldimension — detta påverkar fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display och tv-skalning. Argumenttolkningen över modulerna sensor, fir, tof, tv, mjpeg, gif, imageio, tf och audio förenhetligades, vilket gjorde flera tidigare positionsbaserade alternativ endast-nyckelord (namn, standardvärden och beteende är i övrigt oförändrade).

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

Migrationschecklista

För en ren portning till v4.5.1 är det typiska arbetet:

  1. Uppdatera Image()-konstruktion till den nya nyckelordsformen, byt display.write() från x_size/y_size, och döp om WINC.connect() essidssid (hantera de nya bytes-baserade skanningstuplerna) (ändringarna av konstruktor/display/WINC).

  2. Skala om anrop till Display.backlight() till 0–100, kontrollera eventuell heltalsanvändning av x_scale/y_scale på nytt, och skicka tidigare positionsbaserade modulalternativ som nyckelord (beteendeändringarna).