v3.6.1

A v3.6.1 egy nagy kiadás. Bevezeti az imu modult (LSM6DS3), egy sor új sensor getter API-t IMU-vezérelt automatikus elforgatással, a 4 pontos perspektivikus rotation_corr() korrekciót, valamint elindítja az Arduino Portenta H7 támogatását a HIMAX HM01B0 és OV7690 kamerákkal. Több sensor / image API megváltozott, és a TensorFlow támogatása megszűnt az M7-en — olvasd el az alábbi visszafelé nem kompatibilis változásokat.

Kiemelések

  • imu modul — gyorsulásmérő / giroszkóp / hőmérséklet / dőlés / bólintás az LSM6DS3-on (OpenMV 4 / Portenta).

  • Sensor getterek + automatikus elforgatásget_pixformat() / get_framesize() / get_hmirror() / get_vflip() / get_windowing(), set_transpose() / set_auto_rotation(), valamint IMU-vezérelt pillanatkép-elforgatás.

  • Perspektivikus korrekció — a rotation_corr() új fov és corners (4 pontos) kulcsszavakat kap.

  • Új hardver — Arduino Portenta H7, HIMAX HM01B0 és OV7690 kamera.

  • Visszafelé nem kompatibilis: a set_pixformat() / set_framesize() mostantól None értéket ad vissza, a sensor.set_framerate() eltávolításra került, a TensorFlow támogatása megszűnt az M7-en, a lens_corr() / linpolar() pedig mostantól páros méreteket igényel — lásd a visszafelé nem kompatibilis változásokat.

Új funkciók

  • imu — új IMU modul: imu.acceleration_mg(), imu.angular_rate_mdps(), imu.temperature_c(), imu.roll(), imu.pitch() és imu.sleep() (LSM6DS3 az OpenMV 4 / Portenta eszközökön).

  • Sensor getterek — hozzáadva a sensor.get_pixformat(), get_framesize(), get_hmirror(), get_vflip(), get_windowing(), set_transpose() / get_transpose() és set_auto_rotation() / get_auto_rotation().

  • Automatikus elforgatás — a sensor.snapshot() az IMU segítségével tükrözi / forgatja / transzponálja a képkockákat, ha az automatikus elforgatás engedélyezve van.

  • rotation_corr() — hozzáadva a fov és corners (4 pontos perspektíva) kulcsszavak, perspektivikus korrekciós példákkal.

  • lcd.init() — hozzáadva egy bgr kulcsszó argumentum.

  • collections.deque — engedélyezve a MicroPython buildben.

  • Hozzáadva a sensor.OV7690 és sensor.HM01B0 azonosító konstansok, valamint egy numpy-szerű ulab képszűrő példa.

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

  • Jelentősen optimalizálva lettek a képszűrők (medián / módusz / átlag / …), a find_circles() és a lencsekorrekció; az alloc_extra_fb mostantól tetszőleges számú bájtot tud lefoglalni; a személyészlelő modell újraépült egy új average-pool művelettel.

Hibajavítások

Kamera és érzékelők:

  • Javítva az OV2640 sleep() (mostantól a COM2 standby regisztert használja a power-down láb helyett), az FSYNC láb konfigurációja, a HM01B0 HSYNC/VSYNC polaritásai és I2C címe/szkennelése, a Portenta érzékelő power-down GPIO-ja és a kamera reset lába, valamint letiltva az automatikus elforgatás, ha az IMU bólintása 90°/270° közelében van.

Képalkotás és rendszer:

  • Javítva egy képszűrő határellenőrzési hiba, egy hardfault a D-cache letiltásakor, az indítás SD-kártya nélküli kártyákon, egy tf.load() load_to_fb hiba, a személyészlelés stack-túlcsordulása (a H7 stack ≥12 KB-ra emelve), valamint a USB-leírók eltolásai nagy sebességű módban az OpenMV 4 Plus eszközön.

Hardver- és kártyatámogatás

  • Arduino Portenta H7 — kezdeti kártya-bevezetés (STM32H747 órajel/OSC/HSE konfiguráció, CMSIS fejlécek, ADC, SDRAM, Arduino USB PID).

  • HIMAX HM01B0 — új monokróm kamera-illesztőprogram (Bayer, külső oszcillátoros órajel).

  • OV7690 — új kamera-illesztőprogram.

  • LSM6DS3 IMU — OpenMV 4 / Portenta.

Visszafelé nem kompatibilis API-változások

Felhasználó által észlelhető API-törések a v3.6.0 és a v3.6.1 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:

  • 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áltozások a hatásuk szerint vannak csoportosítva ebben a sorrendben. Ha csak portolni szeretnéd a kódodat, ugorj a migrációs ellenőrzőlistára a végén. Minden commit hash a GitHub-on lévő diffjére mutat.

sensor.set_framerate() eltávolítva (minor)

A no-op sensor.set_framerate() csonk eltávolításra került; mostantól meghívása AttributeError kivételt vált ki. Távolítsd el a hívást, és vezéreld a képkocka-időzítést helyette a framesize/expozíció révén. (Egy működő set_framerate() újra bevezetésre kerül a v4.0.2-ben.)

Commitok: 705e98f91

TensorFlow támogatása megszűnt az OpenMV Cam M7-en (minor)

A TensorFlow (a tf modul) le lett tiltva az OpenMV Cam M7 / OpenMV 3 eszközön (már nem fér el). Az import tf az M7-en sikertelen — használj H7-osztályú kamerát a TensorFlow-hoz. (A tf újra engedélyezésre kerül az F7-en a v3.6.3-ban.)

Commitok: 2ae875077

set_pixformat() / set_framesize() None értéket ad vissza (behavior)

A sensor.set_pixformat() és a sensor.set_framesize() mostantól None értéket ad vissza True helyett, egy nem támogatott képpontformátum pedig mostantól ValueError kivételt vált ki egy assertion helyett. Annak a kódnak, amely a visszatérési értéket ellenőrizte (pl. if sensor.set_pixformat(...):), fel kell hagynia ezzel, és annak a kódnak, amely AssertionError kivételt kapott el nem támogatott formátumoknál, mostantól ValueError kivételt kell elkapnia.

Commitok: f314ac4e7

lens_corr() / linpolar() / logpolar() páros méreteket igényel (behavior)

Az image.lens_corr() és az image.linpolar() / image.logpolar() mostantól páros képszélességet és -magasságot igényel, és páratlan méretek esetén hibát vált ki. Vágd vagy méretezd át a képet páros méretekre, mielőtt meghívnád ezeket a metódusokat.

Commitok: b36460a36, 2b26ca17b

Migrációs ellenőrzőlista

A v3.6.1-re való tiszta portoláshoz a tipikus teendők:

  1. Távolítsd el a sensor.set_framerate() hívásokat (a set_framerate eltávolítása).

  2. Helyezd át a TensorFlow munkaterheléseket az OpenMV Cam M7-ről (az M7 TensorFlow-változása).

  3. Ne támaszkodj a set_pixformat() / set_framesize() visszatérési értékére, és kapj el ValueError kivételt a nem támogatott képpontformátumoknál (a visszatérési érték változása).

  4. Biztosíts páros képméreteket a lens_corr() / linpolar() / logpolar() hívása előtt (a páros méret követelménye).

Minden más szkript változatlanul fut.