v2.7.0

A v2.7.0 modernizálja a sensor automatikus erősítés / automatikus expozíció / fehéregyensúly API-ját fizikai mértékegységekre (dB / mikroszekundum), átdolgozza a fáziskorrelációs find_displacement() függvényt (elforgatás/méretezés hozzáadásával), valamint hozzáadja a get_similarity() (SSIM), chrominvar() / illuminvar() függvényeket, további képkocka-puffereket és egy MQTT könyvtárat. Ez egy nagy, töréses kiadás — olvasd el az alábbi töréses változásokat.

Kiemelt újdonságok

  • Modern sensor API — a set_auto_gain() / set_auto_exposure() / set_auto_whitebal() mostantól dB / mikroszekundum mértékegységeket használ, a hozzájuk tartozó get_gain_db() / get_exposure_us() / get_rgb_gain_db() függvényekkel.

  • Fáziskorreláció — átdolgozott find_displacement() elforgatással / méretezéssel, valamint find_rotscale() / linpolar() / logpolar().

  • SSIMimage.get_similarity() strukturális hasonlóság.

  • További képkocka-puffereksensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — új MQTT könyvtár.

  • Töréses: az érzékelő erősítés/expozíció/fehéregyensúly API-ja, a find_displacement() / FFT framesize-ok, a find_number(), a WINC firmware-eszközök és az AprilTag z_rotation() mind megváltozott — lásd a töréses változásokat.

Új funkciók

  • Sensor — hozzáadva a sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), egy gain_db_ceiling kulcsszó a set_auto_gain() függvényhez, MT9V034 hmirror / vflip támogatás, valamint a sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() további RAM-beli képkocka-pufferekhez.

  • Image — hozzáadva a remove_shadows(), min() / max() (képkocka-különbségképzés), get_similarity() (SSIM) egy strukturális-hasonlóság példával, chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), threshold / offset / invert kulcsszavak a mean() / mode() / median() / midpoint() adaptív szűrőkhöz, len() / indexelés a keypoints objektumon, valamint egy .match() elérő a kulcspont-egyezés objektumon.

  • Könyvtárak / hálózat — hozzáadva egy MQTT könyvtár (egy WiFi MQTT példával) és egy network.WINC.MODE_BSP mód a WINC firmware programozásához a hibakereső UART-on keresztül.

  • Példák — hozzáadva alacsony fogyasztású deep_sleep.py / stop_mode.py, fejlett optikai-áramlás, valamint lineáris/log-poláris példaszkriptek; a firmware mostantól indításkor beolvassa a uart.ini fájlt egy REPL UART engedélyezéséhez.

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

  • A get_regression() area_threshold / pixels_threshold kulcsszavakat és egy gyorsabb, robusztus regressziót kapott (vonalkövetéshez / versenyzéshez); a get_pixel() mostantól támogatja a Bayer-képeket; STM32H7 alapozó munkák hozzáadva (CMSIS fejlécek / HAL / rendszerbetöltő — a H7 alaplap még nem használható); a mellékelt WINC1500 firmware frissítve (19.4.4 / 19.5.2).

Hibajavítások

Képfeldolgozás:

  • Javítva a find_template() gyémánt-keresési túlcsordulási (out-of-bounds) hibája, a logpolar / linpolar adatsérülése, és hogy az illuminvar() elszállt a nulla közeli színértékeknél.

Érzékelő és rendszer:

  • Javítva az automatikus-erősítés-szabályozás hibái, helyreállítva a MAIN_FB mérete a snapshot() során (így a copy_to_fb eltérő felbontáson, az FB átméretezés és az optikai-áramlás összevonás (pooling) ismét működik), a WINC gethostbyname időtúllépése, a pydfu clear-status a H7 rendszerbetöltőn, valamint az alacsony fogyasztású stop/standby módok.

Hardver- és alaplap-támogatás

  • STM32H7 — alapozó munkák (CMSIS / HAL / rendszerbetöltő); az OpenMV H7 alaplap ebben a kiadásban még nem használható.

  • WINC1500 — a mellékelt firmware frissítve.

Töréses API-változások

Felhasználó számára látható API-törések a v2.6.0 és a v2.7.0 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áltozás meg van jelölve a hatásával:

  • major — a funkciót használó szkriptek többségét érinti; portolnod kell majd a kódot.

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

  • behavior — ugyanaz az API, eltérő eredmények; ellenőrizd újra a hangolt szkripteket.

A változá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 hozzá tartozó diffre mutat a GitHubon.

A sensor.set_auto_gain() átdolgozva dB-re (major)

A sensor.set_auto_gain() már nem fogadja el az egész value= kulcsszót, és már nem ad vissza True / False értéket. Használd a sensor.set_auto_gain(False, gain_db=...) formát (lebegőpontos dB érték), olvasd vissza az új sensor.get_gain_db() függvénnyel, és csomagold a hívást try / except blokkba, mivel a hiba mostantól ValueError-t vált ki.

Commitok: b906c5f19

A sensor.set_auto_exposure() átdolgozva mikroszekundumra (major)

A sensor.set_auto_exposure() már nem fogadja el az egész value= kulcsszót, és már nem ad vissza True / False értéket. Használd a sensor.set_auto_exposure(False, exposure_us=...) formát, olvasd vissza az új sensor.get_exposure_us() függvénnyel, és kezeld a hiba esetén kiváltott ValueError-t.

Commitok: 7be0a7a18

A find_displacement() / FFT framesize-ok átdolgozva (major)

A fáziskorreláció átdolgozásra került. Az image.find_displacement() mostantól egy elmozdulás-objektumot ad vissza (az x_translation() / y_translation() metódusokkal — korábban x_offset / y_offset — plusz rotation() / scale() és új logpolar / fix_rotation_scale kulcsszavakkal); a külön rot-scale objektum eltávolításra került, és hozzáadtuk a find_rotscale() függvényt. Az FFT framesize konstansok átnevezésre/eltávolításra kerültek: a sensor.B40x30 teljesen eltávolítva, a sensor.B64x32 / B64x64 pedig nagybetűsre, sensor.B64X32 / B64X64 formára átnevezve (új B128X64 / B128X128 konstansokkal).

Commitok: c78f91b42, 213396d09

A sensor.set_auto_whitebal() átdolgozva dB-re (minor)

A sensor.set_auto_whitebal() lecserélte az egész value=[r, g, b] kulcsszavát rgb_gain_db=[r, g, b]-re (lebegőpontos dB), és mostantól None-t ad vissza (hiba esetén ValueError-t kiváltva) a True / False helyett. Az erősítések visszaolvasásához használd az új sensor.get_rgb_gain_db() függvényt.

Commitok: 30ecbdc4f

A set_hmirror() / set_vflip() mostantól None-t ad vissza (minor)

A sensor.set_hmirror() és a sensor.set_vflip() mostantól None-t ad vissza, és hiba esetén ValueError-t vált ki, ahelyett hogy True / False állapotot adna vissza. Távolíts el minden olyan kódot, amely a visszatérési értékükre ágazik el.

Commitok: aeb023804

A WINC firmware-eszközök fájlútvonalat igényelnek (minor)

A network.WINC firmware-eszközkészlete megváltozott: a wlan.fw_dump() / wlan.fw_update() mostantól kötelező firmware-fájlútvonal argumentumot vár, és a WINC programozási módban nyílik meg (network.WINC(mode=...)). Frissítsd az argumentum nélküli hívásokat egy útvonal átadására (pl. wlan.fw_update("/winc_19_5_2.bin")).

Commitok: fcc3b0b9c

Az image.find_number() 28x28-as ROI-t igényel (behavior)

Az image.find_number() (LeNet) mostantól pontosan 28x28-as ROI-t igényel, amely belefér a képbe, és egyébként hibát vált ki (ahelyett, hogy tetszőleges/teljes képes ROI-n futna). Adj át egy explicit roi=(x, y, 28, 28) értéket.

Commitok: 4d09a13f3

Az AprilTag z_rotation() előjele megfordult (behavior)

Az AprilTag z_rotation() (és a kapcsolódó rotation()) mostantól jobbsodrású koordináta-konvenciót használ, így a visszaadott szög ellentétes előjelű a korábbi kiadásokhoz képest. A régi előjeltől függő szkripteknek meg kell fordítaniuk az értéket, vagy módosítaniuk kell a szögszámításukat.

Commitok: 7673aaf74

Migrációs ellenőrzőlista

A v2.7.0-ra való tiszta portoláshoz a tipikus teendők a következők:

  1. Portold a set_auto_gain() hívásokat gain_db= + get_gain_db() formára, és kezeld a ValueError-t (az automatikus-erősítés átdolgozás).

  2. Portold a set_auto_exposure() hívásokat exposure_us= + get_exposure_us() formára (az automatikus-expozíció átdolgozás).

  3. Frissítsd a find_displacement() hívásokat az elmozdulás-objektumra, és nevezd át az FFT framesize konstansokat (a find_displacement átdolgozás).

  4. Portold a set_auto_whitebal() hívásokat rgb_gain_db= + get_rgb_gain_db() formára (a fehéregyensúly átdolgozás), és ne ellenőrizd többé a set_hmirror() / set_vflip() visszatérési értékét (a tükrözés/átfordítás változás).

  5. Adj át egy firmware-útvonalat a WINC fw_* eszközöknek (a WINC eszközök változás).

  6. Adj át egy 28x28-as roi értéket a find_number() függvénynek (a find_number változás), és igazítsd ki az AprilTag szögszámítást a megfordult z_rotation() előjelhez (a z_rotation változás).

Minden más szkript változtatás nélkül fut.