v4.5.3

A v4.5.3 egy nagy kiadás: OV5640 automatikus fókusz, élsimított vonalrajzolás, a fő ágba került hardveres JPEG-dekóder, jelentős i.MX RT (RT1060) képességbővítés, valamint a kamera/ISP hibajavítások széles köre. Néhány ritkán használt képmetódust eltávolítottunk, és bizonyos ISP/kijelző API-k megváltoztak — olvasd el az alábbi törő változtatásokat.

Kiemelt újdonságok

  • OV5640 automatikus fókusz — engedélyezve az OpenMV 4 / 4 Plus / RT1060 eszközökön (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), példával együtt.

  • Élsimított draw_line() és a fő ágba került STM32 hardveres JPEG-dekóder (gyorsabb JPEG-dekompresszió).

  • Az OpenMV RT1060 megkapta a ulab könyvtárat, az ISP műveleteket, a set_framerate() / set_frame_callback() függvényeket, egy sokkal nagyobb képkocka-puffert és a CAN illesztőprogramot.

  • Törő változás: az Image.div() / cartoon() / mul() metódusokat eltávolítottuk, és néhány ISP/kijelző API megváltozott — lásd a törő változtatásokat.

Új funkciók

  • OV5640 automatikus fókusz — az automatikus fókusz firmware engedélyezve van az OPENMV4, OPENMV4P és OPENMV RT1060 eszközökön; a sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS) hívással indítható. Egy új 07-Sensor-Control/autofocus.py példát is hozzáadtunk.

  • Élsimított vonalrajzolás — a draw_line() élsimítást kapott.

  • Egyedi SPI kijelzővezérlők — a SPIDisplay mostantól elfogad egy controller= kulcsszót, és egy bus_write horgot tesz elérhetővé az egyedi inicializáló/parancs szekvenciákhoz.

  • Image.ccm() bővítés — mostantól elfogad beágyazott 3x3 / 4x3 / 3x4 / 4x4 mátrixokat és ulab tömböket (opcionális, csatornánkénti eltolás sorral); egy színkorrekciós példát is hozzáadtunk.

  • i.MX RT JPEG-rögzítéssensor.JPEG rögzítés az Arduino Portenta/Nicla Vision/Giga eszközökön, valamint set_framerate() és set_frame_callback() a mimxrt porton.

  • TFLite modell-érvényesítés — a modellek mostantól egy operátorsorrend-hasht és egy operátorkészlet-méretet hordoznak.

  • WiFi — hozzáadtuk a CYW43 biztonsági mód konstansokat; új i.MX RT lapvezérlő példaszkriptek (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).

Egyéb változások és fejlesztések

  • A MicroPython 1.22-re frissült; a CMSIS 5.9.0-ra frissült.

  • A fő ágba került STM32 hardveres JPEG-dekóder — gyorsabb JPEG-dekompresszió a chipen lévő kodeken.

  • Optimalizáltuk az Image.invert() / negate() metódusokat, valamint a bináris/matematikai képműveleteket (CMSIS intrinsics).

  • Az rpc és vl53l1x könyvtárakat hordozhatóvá tettük (a pyb helyett a machine / time modulokat használják), így nem STM32 portokon is futnak.

  • DMA-gyorsított képkocka-puffer memcpy az OpenMV H7 / H7 Plus / Pro / Pure Thermal és Arduino Giga / Nicla Vision / Portenta H7 eszközökön; az STM32 mostantól keresésenként egyszer pásztázza az I2C eszközöket a gyorsabb indulás érdekében.

Hibajavítások

Kamera és érzékelők:

  • Javítottuk az STM32 kamera XCLK-ját valódi 50%-os kitöltési tényezőre, valamint egy hibát, amikor a kamera órajel-frekvenciája nullára van állítva; javítottuk a Bayer kivágás+transzponálást, a YUV422 színeltolódást és a set_windowing() működését a mimxrt porton.

  • Javítottuk a GC2145 chip-ID lekérdezést és a hmirror/vflip működését elforgatott szerelvényeken; javítottuk a PAJ6100 működését az RT1062-n, valamint egy PixArt PAJ7620/PAW3902 SPI puffertúlcsordulást.

Képfeldolgozás:

  • Javítottuk a find_rects() roi vágását, a morph() tört eltolás csonkolását, az image.gamma() kontraszt/fényerő alapértékeit, a get_threshold() A/B eltolásokat RGB565-ön, valamint a 8-cal nem osztható méretű képek JPEG-dekódolását.

Rendszer és könyvtárak:

  • A machine.LED.value() argumentum nélkül mostantól a LED állapotát adja vissza ahelyett, hogy törölné azt; javítottuk az SPI SSEL deinit működését megosztott buszon, a machine.deepsleep() függvényt az RT1062-n, egy TF összeomlást hiányzó operátorok esetén, valamint a WINC1500/ninaw10 NIC automatikus aktiválását connect() híváskor.

Hardver- és laptámogatás

  • OpenMV RT1060 — engedélyezett ulab és ISP műveletek, nagyobb képkocka-puffer (10M→20M) / fb_alloc (2M→11M), visszaállított CAN illesztőprogram, több heap.

  • Arduino GIGA — GC2145 kamera támogatás, GC2145/OV5640 automatikus felismeréssel (közös I2C címen osztoznak).

  • i.MX RTsensor.JPEG rögzítés támogatása.

Törő API-változtatások

A felhasználó számára látható API-törések a v4.5.2 és a v4.5.3 között. Hatókör: a modules/ mappában lévő Python C-modulok és a scripts/libraries/ mappában lévő Python könyvtárak.

Minden változtatás meg van jelölve a hatásával:

  • minor — szűk API; csak az azt használó szkripteket érinti.

  • behavior — azonos API, eltérő eredmények; ellenőrizd újra a finomhangolt szkripteket.

A változtatások hatás szerint, ebben a sorrendben vannak csoportosítva. Ha csak portolni szeretnéd a kódodat, ugorj a végén lévő migrációs ellenőrzőlistára. Minden commit hash a GitHubon lévő diffjére hivatkozik.

Eltávolított képmetódusok (minor)

Az Image.div(), Image.cartoon() (és a hozzá tartozó példa), valamint az Image.mul() metódusokat eltávolítottuk.

Commitek: 7c932602e, 055a468b8, 4fe7fb63b

Kijelző modul API (minor)

A régi udisplay modulnév-tartalék eltávolításra került — a modul kizárólag display néven van regisztrálva. A csak DSI-hez tartozó dsi_write() / dsi_read() metódusokat a bus_write() / bus_read() váltotta fel, amelyek mostantól minden kijelzővezérlőn elérhetők.

Commitek: 7df6694c3, 7d1f378a0

MQTT és tf.regression API-változtatások (minor)

A mqtt könyvtár MQTTClient osztályát átdolgoztuk: a port mostantól kötelező, új ssl_params / callback konstruktor kulcsszavakat és egy timeout argumentumot adtunk a connect() híváshoz, a régi ssl= / port=0 alapértékeket eltávolítottuk, a check_msg() pedig mostantól nem blokkoló. A tf.regression() újraírásra került — a szignatúrája mostantól regression(model, array), és kezeli az 1D/2D/3D, valamint a kvantált (int8) modelleket.

Commitek: d12874c63, c5ec576c1

ISP / érzékelő viselkedési változások (behavior)

Az Image.awb() átdolgozásra került — a szürke-világ (alapértelmezett) és a fehér-folt (max=True) módok közötti választás mostantól explicit, a max argumentum, valamint az Image.gamma() gamma / contrast / brightness argumentumai mostantól csak kulcsszóként adhatók meg (a pozicionális hívásokat frissíteni kell). A kép transzponálása mostantól le van tiltva YUV422 esetén (korábban hibás kimenetet adott), és a YUV422 színeltolódást a Bayerhez igazítottuk. Az STM32 JPEG útvonal mostantól hibát jelez JPEG geometria-eltérés esetén, ahelyett hogy sérült képet állítana elő, a WiFi AP mód pedig mostantól alapértelmezett biztonsági módot alkalmaz az STM32 és i.MX RT portokon.

Commitek: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af

Migrációs ellenőrzőlista

A v4.5.3-ra való tiszta portoláshoz a tipikus teendők:

  1. Ne használd többé az Image.div() / cartoon() / mul() metódusokat (az eltávolított metódusok).

  2. Importáld a kijelző modult display néven, és váltsd át a dsi_write/ dsi_read hívásokat bus_write/bus_read hívásokra (a kijelző API-változás).

  3. Frissítsd az MQTTClient létrehozását (a port kötelező; ssl_params/callback) és minden tf.regression() hívást (a könyvtár API-változások).

  4. Add át az awb() max és a gamma() gamma/contrast/ brightness argumentumait kulcsszó-argumentumként, és ellenőrizd újra a YUV422/transzponálással és az AP mód biztonságával kapcsolatos feltételezéseket (az ISP/érzékelő változások).