v2.4.0¶
A v2.4.0 átírja a find_lines() függvényt Hough-transzformációs detektorrá, hozzáadja a find_line_segments(), a find_datamatrices() data-matrix dekódolás, a sensor.set_vsync_output() funkciókat, a kép-szelet olvasást/írást, valamint számos új skálázott képkockaméretet a magasabb FPS-hez. A find_lines(), a match_descriptor() és a skip_frames() megváltozott — olvasd el az alábbi töréses változásokat.
Kiemelések¶
find_lines()— átírva Hough-transzformációs vonaldetektorrá, amely vonalobjektumokat ad vissza (mostantól RGB565-ön is működik, nem csak szürkeárnyalatoson).find_line_segments()— véges vonalszakaszok észlelése.find_datamatrices()— data-matrix dekódolás.sensor.set_vsync_output()— VSYNC vezérlése egy I/O lábon a kamera szinkronizálásához.Több képkockaméret — számos további skálázott felbontás a magasabb FPS-hez.
Töréses: a
find_lines(), amatch_descriptor()és askip_frames()megváltozott — lásd a töréses változásokat.
Új funkciók¶
image.find_line_segments()— nem végtelen vonalszakaszok keresése; a vonalobjektumok egy.length()elérővel bővültek.image.find_datamatrices()— data-matrix dekódolás, példaszkriptekkel.sensor.set_vsync_output(pin)— a VSYNC jel kiadása egy GPIO lábon a kamera szinkronizálásához (OpenMV 2 / OpenMV 3).Kép-szeletek — a kép-index / puffer protokoll mostantól támogatja a képadatok szeleteinek olvasását és írását.
Számos további skálázott felbontás / képkockaméret kombináció hozzáadva a magasabb képkockasebesség támogatásához; a
clock.fps()mostantól 2 másodpercenként alaphelyzetbe állítja az akkumulátorait, így a jelentett FPS a legutóbbi sebességet követi.
Egyéb változások és fejlesztések¶
Az OV7725 QVGA-ra van ablakozva, ha a felbontás ≤ VGA (kevesebb eldobott képkocka magas rögzítési sebességeknél), és a PLL-je 6×-osra lett állítva csökkentett külső órajellel (OpenMV 2 48 MHz, OpenMV 3 54 MHz), ami megváltoztatja az érzékelő képkocka-időzítését.
Hibajavítások¶
Képfeldolgozás:
Javítva a
compress_for_ide()puffer-méret hibája (kezdő/záró jelölő), a QR dekódolás (valamint a felsőbb szintű quirc cella-bitkép indexelési és igazítási-minta határ-javítások).
Érzékelő és kapcsolat:
Csökkentve az OpenMV 2 érzékelő órajele, hogy működjön a magasabb érzékelő PLL-lel (kamera init/sync), és a WINC
socket.recvfrom()mostantól a ténylegesen fogadott méretet adja vissza (nem pozitív méret esetén hibát jelez ahelyett, hogy elavult értéket adna vissza).
Hardver- és laptámogatás¶
VSYNC kimenet egy GPIO lábon (OpenMV 2 / OpenMV 3), amely a
sensor.set_vsync_output()mögött áll.OpenMV 3 — engedélyezve a
pyb.UARTUART1.
Töréses API-változások¶
A felhasználó által látható API-törések a v2.3.0 és a v2.4.0 között. Hatókör: Python C-modulok a modules/ mappában és Python könyvtárak a scripts/libraries/ mappában.
Minden változás meg van jelölve a hatásával:
major — a legtöbb olyan szkriptet érinti, amely a funkciót használta; portolnod kell a kódot.
minor — szűk API; csak az azt használó szkripteket érinti.
behavior — azonos 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 migrációs ellenőrzőlistához a végén. Minden commit hash a GitHub-on lévő diffjére hivatkozik.
find_lines() átírva Hough-detektorrá (major)¶
Az image.find_lines() átírásra került Hough-transzformációs detektorrá. Már nem (x1, y1, x2, y2) tuple-ök listáját adja vissza — vonalobjektumokat ad vissza (.line() / .x1() / .y1() / .x2() / .y2() / .theta() / .rho() / .magnitude()) —, és mostantól RGB565-ön is működik (nem csak szürkeárnyalatoson). A threshold argumentum 0.0–1.0 float-ról egész élmagnitúdó-összegre változott, a line.magnitude mostantól egész szám, és új theta_margin / rho_margin kulcsszavak kerültek hozzáadásra. Portold a tuple-kibontó kódot a vonalobjektumokra, és hangold újra a threshold értékét.
match_descriptor() egy match objektumot ad vissza (minor)¶
Az image.match_descriptor() (ORB) mostantól egy kptmatch objektumot ad vissza .cx() / .cy() / .x() / .y() / .w() / .h() / .count() / .theta() / .rect() elérőkkel, egy egyszerű 8-elemű tuple helyett. Az objektum továbbra is indexelhető/szeletelhető, így a pozíció szerinti indexelés tovább működik, de az a kód, amely isinstance(result, tuple) ellenőrzést végzett (vagy tuple metódusokat használt), az új elérőket kell használnia.
Commitok: e960546b6
A sensor.skip_frames() mostantól időalapú (behavior)¶
A sensor.skip_frames() átdolgozásra került, hogy elfogadjon egy time= kulcsszót (alapértelmezetten ~300 ms), és mostantól alapértelmezetten időalapú, ahelyett, hogy rögzített számú képkockát futtatna, és korán leáll, amint az idő letelt. Azoknak a szkripteknek, amelyek pontos képkockaszámra támaszkodtak, explicit számot kell átadniuk és/vagy ennek megfelelően be kell állítaniuk a time= értéket.
Commitok: a039b5d1c
Migrációs ellenőrzőlista¶
A v2.4.0-ra való tiszta portoláshoz a tipikus munka a következő:
Portold a
find_lines()tuple-kibontást a vonalobjektumokra, és hangold újra az egészthresholdértéket (a find_lines átírása).Használd a
kptmatchelérőket ahelyett, hogy amatch_descriptor()eredményeit tuple-ként kezelnéd (a match_descriptor változás).Adj át explicit számot és/vagy
time=értéket asensor.skip_frames()függvénynek, ha rögzített képkockaszámra támaszkodtál (a skip_frames változás).
Az összes többi szkript változtatás nélkül fut.