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, valamintfind_rotscale()/linpolar()/logpolar().SSIM —
image.get_similarity()strukturális hasonlóság.További képkocka-pufferek —
sensor.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, afind_number(), a WINC firmware-eszközök és az AprilTagz_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(), egygain_db_ceilingkulcsszó aset_auto_gain()függvényhez, MT9V034hmirror/vfliptámogatás, valamint asensor.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 amean()/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_BSPmó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 auart.inifájlt egy REPL UART engedélyezéséhez.
Egyéb változások és fejlesztések¶
A
get_regression()area_threshold/pixels_thresholdkulcsszavakat és egy gyorsabb, robusztus regressziót kapott (vonalkövetéshez / versenyzéshez); aget_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, alogpolar/linpolaradatsérülése, és hogy azilluminvar()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_FBmérete asnapshot()során (így acopy_to_fbeltérő felbontáson, az FB átméretezés és az optikai-áramlás összevonás (pooling) ismét működik), a WINCgethostbynameidőtúllépése, apydfuclear-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).
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:
Portold a
set_auto_gain()hívásokatgain_db=+get_gain_db()formára, és kezeld aValueError-t (az automatikus-erősítés átdolgozás).Portold a
set_auto_exposure()hívásokatexposure_us=+get_exposure_us()formára (az automatikus-expozíció átdolgozás).Frissítsd a
find_displacement()hívásokat az elmozdulás-objektumra, és nevezd át az FFT framesize konstansokat (a find_displacement átdolgozás).Portold a
set_auto_whitebal()hívásokatrgb_gain_db=+get_rgb_gain_db()formára (a fehéregyensúly átdolgozás), és ne ellenőrizd többé aset_hmirror()/set_vflip()visszatérési értékét (a tükrözés/átfordítás változás).Adj át egy firmware-útvonalat a WINC
fw_*eszközöknek (a WINC eszközök változás).Adj át egy 28x28-as
roiértéket afind_number()függvénynek (a find_number változás), és igazítsd ki az AprilTag szögszámítást a megfordultz_rotation()előjelhez (a z_rotation változás).
Minden más szkript változtatás nélkül fut.