v2.1.0

A v2.1.0 egy hatalmas API-modernizációs kiadás. Lecseréli a FREAK kulcspont-leírót ORB-ra, átdolgozza a find_blobs() / hisztogramok / statisztikák felületét objektumalapú API-kká, átnevezi a sensor automatikus expozíció/erősítés/fehéregyensúly függvényeit, hozzáadja a QR-kód-észlelést és az OV7725 lencsekorrekciót, valamint üzembe helyezi a kezdeti OpenMV Cam M7 lapot. Sok API megváltozott — olvasd el az alábbi visszafelé nem kompatibilis változásokat.

Kiemelések

  • ORB kulcspontok — a FREAK leírót ORB váltotta fel (find_keypoints() / match_descriptor() átdolgozva).

  • Objektum-API-k — a find_blobs(), get_histogram(), get_statistics() mostantól nevesített hozzáférőkkel rendelkező objektumokat ad vissza.

  • QR-kódok — hozzáadtuk az image.find_qrcodes() észlelést.

  • OpenMV Cam M7 — kezdeti laptámogatás.

  • Sensorset_auto_whitebal() / set_auto_gain() / set_auto_exposure() (átnevezve) és set_lens_correction().

  • Visszafelé nem kompatibilis: a kulcspont/leíró, a folt/hisztogram/statisztika, az érzékelő automatikus függvényei és több más API megváltozott — lásd a visszafelé nem kompatibilis változásokat.

Új funkciók

  • OpenMV Cam M7 — hozzáadtuk a kezdeti OpenMV 3 (M7) laptámogatást.

  • QR-kódok — hozzáadtuk az image.find_qrcodes() függvényt egy qrcodes.py példával.

  • ORB kulcspontok — új ORB leírórendszer: find_keypoints() egy corner_detector argumentummal (CORNER_FAST / CORNER_AGAST), max_keypoints / scale_factor; match_descriptor() egy filter_outliers kulcsszóval és forgásbecsléssel; kulcspontok mentése/betöltése.

  • Objektum-API-k — az image.get_histogram() / get_statistics() / get_percentile() hisztogram-/statisztika-objektumokat ad vissza; a find_blobs() folt-objektumokat ad vissza (rect() / cx() / cy() / code() / area() / pixels()) az area_threshold / pixels_threshold / merge / margin / invert és x_stride / y_stride paraméterekkel.

  • Sensor — hozzáadtuk a sensor.set_lens_correction(enable, radi, coef) függvényt az OV7725 lencseárnyékoláshoz, a sensor.set_windowing() mostantól egy (w, h) tuple-t is elfogad (automatikusan központozva), valamint az image.Image(..., copy_to_fb=True) / load_image(copy_to_fb=True) lehetőséget.

  • Hozzáadtunk színkövetési, Arduino SPI/I2C-slave, kulcspont- és hisztogram/statisztika példaszkripteket.

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

  • Az IDE mostantól meg tud szakítani egy futó main.py-t; gyorsabb find_blobs() / find_qrcodes() / get_statistics(); az ORB popcount Hamming-távolságot használ; a lencsekorrekció kevesebb RAM-ot használ; egy Linux udev szabály megakadályozza, hogy a ModemManager megragadja a soros portot.

Hibajavítások

Kamera és képalkotás:

  • Kijavítottuk az M7 DMA gyorsítótár ürítését/érvénytelenítését (sérült képkockák), egy hibás extra sort minden képkocka végén, a JPEG képkocka-puffer túlcsordulási határait, a képkocka-puffer felszabadítását compress() hiba esetén, az ORB pontosságát / ROI / üres készlet kezelését, valamint a load_image(copy_to_fb=True) geometriáját.

Rendszer:

  • Kijavítottuk az F7 ADC-támogatást, egy OV7725 regiszternevet, a rendszerbetöltő/USB időzítést, WFI-t használtunk a pillanatképekre várakozás közben, és az MJPEG streamelő példát nem blokkolóvá tettük kliensenkénti időtúllépésekkel.

Hardver- és laptámogatás

  • OpenMV Cam M7 (OpenMV 3) — kezdeti laptámogatás.

  • OV7725 — lencsekorrekciós (árnyékolási) támogatás.

Visszafelé nem kompatibilis API-változások

A v2.0.0 és a v2.1.0 közötti, felhasználó számára látható API-törések. 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:

  • nagy — a funkciót használó legtöbb szkriptet érinti; át kell ültetned a kódot.

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

  • viselkedés — azonos API, eltérő eredmények; ellenőrizd újra a hangolt szkripteket.

A változások ebben a sorrendben, hatás szerint vannak csoportosítva. Ha csak a kódodat szeretnéd átültetni, 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 FREAK-et ORB váltotta fel; a leíró API átdolgozva (nagy)

A FREAK kulcspont-leírót eltávolítottuk és ORB-ra cseréltük: az image.FREAK többé nem létezik (használd az image.ORB-ot). A image.match_descriptor() / save_descriptor() / load_descriptor() többé nem fogad bevezető leírótípus-argumentumot (az objektumból van kikövetkeztetve), a match_descriptor() mostantól egy 8 elemű tuple-t ad vissza (cx, cy, x, y, w, h, match_count, rotation) (az utolsó elem nyers darabszám, nem százalék), a draw_keypoints() pedig egy kulcspont-objektumot vár nyers (x, y, angle) lista helyett. A find_keypoints() corner_detector / max_keypoints / scale_factor paramétereket kapott, megváltozott alapértelmezésekkel.

Commitok: e2d0c4840, bba8e5a9e, 6000684cb

Az érzékelő automatikus függvényeinek átnevezése (nagy)

A sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() átnevezésre került sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() névre (a régi neveket eltávolítottuk). Mindegyik kapott egy opcionális value= kulcsszót, amellyel automatikus helyett kézi érték állítható be.

Commitok: 1b22a2961

A hisztogram / statisztika objektum-API-kká átdolgozva (nagy)

A hisztogram/statisztika felület objektumalapú image.get_histogram() / get_statistics() / get_percentile() formára lett átdolgozva, amely hisztogram-/statisztika-objektumokat ad vissza. A régi lapos hisztogram-/statisztika-eredményeket és a bin_count / l_bin_count / a_bin_count / b_bin_count metódusokat eltávolítottuk (használd a len(histogram.bins()) formát stb.).

Commitok: 011108412, 9f37c83de

A find_features() scale paramétere átnevezve (nagy)

Az image.find_features() (Haar) átnevezte a scale= kulcsszavát scale_factor=-ra. Frissítsd a find_features(cascade, scale=...) hívásokat scale_factor=...-ra.

Commitok: 96e4f770c

A find_blobs() objektumokat ad vissza; a find_markers() eltávolítva (kis)

Az image.find_blobs() mostantól nevesített hozzáférőkkel rendelkező folt-objektumokat ad vissza (az indexes hozzáférés a visszafelé kompatibilitás érdekében továbbra is működik), az image.find_markers() pedig eltávolításra került — helyette használd a find_blobs(..., merge=True, margin=...) formát. A speciális színfolt-szűrő visszahívás már nem támogatott.

Commitok: af15ec6eb

Az img.copy_to_fb() lecserélve (kis)

Az img.copy_to_fb() metódust egy copy_to_fb= kulcsszó váltotta fel az image.Image / load_image() hívásokon. Használd az image.Image(path, copy_to_fb=True) formát nagy képek közvetlenül a képkocka-pufferbe való betöltéséhez.

Commitok: 1645ab94b

A compress() elutasítja a tartományon kívüli minőséget (viselkedés)

Az image.compress() / compressed() mostantól hibát dob, ha a quality az 1–100 tartományon kívül esik, ahelyett, hogy csendben levágná. Vágd be a quality értéket az 1–100 tartományba a hívás előtt. Külön megjegyzés: az OpenMV 3 JPEG-pufferét 64 KB-ról 23000 bájtra csökkentettük, így a nagy képkockák mostantól memóriahiányt jelezhetnek — csökkentsd a JPEG-minőséget vagy a képkockaméretet.

Commitok: 9efd7474a, 9a7c3defc

A lens_corr() nagyítása mostantól működik (viselkedés)

Az image.lens_corr() mostantól ténylegesen alkalmazza a zoom argumentumát (korábban értelmezve volt, de hatástalan), így a kimenet eltér azoknál a szkripteknél, amelyek nem alapértelmezett nagyítást adtak át. Ellenőrizd újra a lens_corr() hangolását.

Commitok: d6b49adef

Migrációs ellenőrzőlista

A v2.1.0-ra való tiszta átültetéshez tipikusan a következő munka szükséges:

  1. Cseréld le az image.FREAK-et image.ORB-ra, hagyd el a leírótípus-argumentumot, és frissítsd a match_descriptor() tuple-kicsomagolást / a draw_keypoints() hívást a kulcspont-objektumra (az ORB átdolgozás).

  2. Nevezd át a sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() függvényeket a set_auto_* formákra (az automatikus függvények átnevezése).

  3. Vidd át a hisztogram-/statisztika-kódot az objektum-metódusokra (a hisztogram/statisztika átdolgozás).

  4. Nevezd át a find_features() scale= paraméterét scale_factor=-ra (a find_features átnevezés).

  5. Használd a folt-objektum hozzáférőit, és cseréld le a find_markers() hívást a find_blobs(merge=True, ...) formára (a find_blobs változás); cseréld le az img.copy_to_fb() hívást a copy_to_fb= kulcsszóra (a copy_to_fb változás).

  6. Vágd be a compress() minőségét az 1–100 tartományba, és ellenőrizd újra a JPEG-méreteket az OpenMV 3-on (a compress változás); hangold újra a lens_corr() nagyítását (a lens_corr változás).

Minden más szkript változatlanul fut.