v4.5.1

v4.5.1 přidává nápovědy pro orientaci/poměr stran při vykreslování obrazu, načítání obrazů přímo z cesty k souboru, ioctl pro široké zorné pole na GC2145 a nové API ovladače podsvícení. Také přepracovává konstruktor Image(), API display a parsování argumentů modulů — přečtěte si zásadní změny níže.

Hlavní novinky

  • Nápovědy pro vykreslovánídraw_image() získal nápovědy pro orientaci (HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270) a škálování poměru stran (SCALE_ASPECT_KEEP/EXPAND/IGNORE).

  • Načítání obrazů z diskudraw_image() / display.write() přijímají řetězec s cestou k souboru.

  • Řízení podsvícení — nové třídy DACBacklight / PWMBacklight a argument displeje backlight=.

  • Zásadní změna: konstruktor Image(), API display a parsování argumentů modulů se změnily — viz zásadní změny.

Nové funkce

  • Nápovědy orientace pro draw_image()image.HMIRROR, image.VFLIP, image.TRANSPOSE, plus pohodlné image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • Nápovědy poměru stran pro draw_image()image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE pro přizpůsobení / roztažení / natažení.

  • Konstanty paletimage.PALETTE_RAINBOW a image.PALETTE_IRONBOW (přesunuty do modulu image).

  • Široké zorné pole — nové ioctly sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE (na GC2145, až 5x škálování senzoru).

  • Načítání z diskudraw_image() a display.write() přijímají řetězec s cestou k souboru zdrojového obrazu a načítají ho přímo z úložiště.

  • Ovladače podsvícení — nové třídy DACBacklight a PWMBacklight (importovatelné z display) a klíčový argument backlight= v konstruktorech SPI/paralelních displejů.

Další změny a vylepšení

  • Ovladač ST7701 DSI displeje byl přesunut do vlastního modulu st7701.py (stále importovatelný přes from display import *) a je zmrazen na Arduino Giga; IMU ovladač lsm9ds1 byl zmrazen na Arduino Nano 33 BLE Sense.

  • Kamery MT9V022 / MT9V034 (global-shutter) nyní aplikují korekci šumu řádků pro lepší kvalitu obrazu.

  • Svazek USB mass-storage na i.MX RT je nyní označen jako disk OpenMV.

Opravy chyb

Kamera a senzory:

  • Opravena detekce rohů (find_keypoints() FAST/AGAST) u obrazů vyšších než 480 řádků — vyrovnávací paměť na řádek je nyní dimenzována podle výšky obrazu.

  • Přidána podpora FSYNC pinu pro snímkově synchronizovaný snapshot() na i.MX RT (OpenMV RT1060) a opraveny prohozené piny SPI4 MOSI/MISO na RT1060.

Displej a video:

  • Opraveno pořadí argumentů konstruktoru SPIDisplay (bgr, byte_swap, triple_buffer byly aplikovány na nesprávné parametry).

  • Opraveno poškození obrazu na TV-shieldu při vykreslování obrazu se zadaným obdélníkem a nesprávné hranice MJPEG snímků při nahrávání škálovaných snímků.

Sítě:

  • Režim WINC WiFi AP již nevynucuje zastaralé omezení pouze na WEP — otevřený a WPA AP režim fungují se správnou obsluhou PSK.

Hardware a podpora desek

  • OpenMV RT1060 — FSYNC pin a opravené SPI4 piny.

  • Arduino GIGA — řešení spolehlivosti QSPI; ST7701 displej zmrazen.

  • Arduino Nano 33 BLE Sense — IMU ovladač lsm9ds1 zmrazen.

Zásadní změny API

Pro uživatele viditelné změny API mezi v4.5.0 a v4.5.1. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.

Každá změna je označena svým dopadem:

  • minor — úzké API; ovlivňuje pouze skripty, které ho používaly.

  • behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.

Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete pouze přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

Konstruktor Image() a API display (minor)

Konstruktor image.Image byl přepracován na klíčové argumenty (height, pixformat, buffer=, copy_to_fb=); nyní umí sestavit obraz z existujícího bytearray/bufferu a pro komprimované formáty je buffer vyžadován. display.write() byl přepracován: x_scale/y_scale nyní přijímají float (poměr škálování) nebo int (cílovou velikost v pixelech) a samostatné klíčové argumenty x_size/y_size byly odstraněny. První poziční argument WINC.connect() byl přejmenován z essid na ssid a výsledky skenování WINC WiFi se změnily na (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID jsou nyní bajty; BSSID již není formátovaný MAC řetězec).

Commity: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

Rozsah podsvícení, škálování a pouze klíčové argumenty (behavior)

Display.backlight() nyní přijímá intenzitu 0–100 (0 = vypnuto, 100 = plné) místo 0–255 a při hodnotě mimo rozsah vyvolává ValueError. Celočíselné hodnoty x_scale/y_scale jsou nyní považovány za multiplikativní faktor škálování (stejně jako floaty) namísto cílového rozměru v pixelech — to ovlivňuje fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display a škálování tv. Parsování argumentů napříč moduly sensor, fir, tof, tv, mjpeg, gif, imageio, tf a audio bylo sjednoceno, čímž se několik dříve pozičních voleb stalo pouze klíčovými (názvy, výchozí hodnoty a chování jsou jinak beze změny).

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

Kontrolní seznam migrace

Pro čistý přenos na v4.5.1 je typická práce následující:

  1. Aktualizujte konstrukci Image() na novou klíčovou formu, přepněte display.write() z x_size/y_size a přejmenujte v WINC.connect() essid na ssid (obsluhte nové bajtové n-tice skenování) (změny konstruktoru/display/WINC).

  2. Přeškálujte volání Display.backlight() na 0–100, znovu zkontrolujte jakékoli celočíselné použití x_scale/y_scale a předávejte dříve poziční volby modulů jako klíčové (změny chování).