v3.6.1¶
v3.6.1 je velké vydání. Zavádí modul imu (LSM6DS3), sadu nových getter API modulu sensor s automatickým otáčením řízeným IMU, 4bodovou perspektivní korekci rotation_corr() a zprovozňuje Arduino Portenta H7 s kamerami HIMAX HM01B0 a OV7690. Některá API modulů sensor / image se změnila a na M7 byl odstraněn TensorFlow — přečtěte si přelomové změny níže.
Hlavní novinky¶
Modul
imu— akcelerometr / gyroskop / teplota / náklon (roll) / sklon (pitch) na LSM6DS3 (OpenMV 4 / Portenta).Sensor gettery + automatické otáčení —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation()a otáčení snímků řízené IMU.Perspektivní korekce —
rotation_corr()získává klíčová slovafovacorners(4 body).Nový hardware — Arduino Portenta H7, HIMAX HM01B0 a kamera OV7690.
Přelomová změna:
set_pixformat()/set_framesize()nyní vracíNone,sensor.set_framerate()byla odstraněna, na M7 byl odstraněn TensorFlow alens_corr()/linpolar()nyní vyžadují sudé rozměry — viz přelomové změny.
Nové funkce¶
imu— nový modul IMU:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch()aimu.sleep()(LSM6DS3 na OpenMV 4 / Portenta).Sensor gettery — přidány
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose()aset_auto_rotation()/get_auto_rotation().Automatické otáčení —
sensor.snapshot()používá IMU k překlopení / zrcadlení / transponování snímků, když je automatické otáčení povoleno.rotation_corr()— přidána klíčová slovafovacorners(4bodová perspektiva) spolu s příklady perspektivní korekce.lcd.init()— přidán klíčový argumentbgr.collections.deque— povoleno v sestavení MicroPython.Přidány id konstanty
sensor.OV7690asensor.HM01B0a příklad obrazového filtru ve stylu numpy sulab.
Další změny a vylepšení¶
Výrazně optimalizovány obrazové filtry (median / mode / mean / …),
find_circles()a korekce objektivu;alloc_extra_fbnyní dokáže alokovat libovolný počet bajtů; model detekce osob byl přestavěn s novou operací average-pool.
Opravy chyb¶
Kamera a senzory:
Opraveno
sleep()u OV2640 (nyní používá standby registr COM2 namísto power-down pinu), konfigurace pinu FSYNC, polarity HSYNC/VSYNC u HM01B0 a jeho I2C adresa/skenování, GPIO power-down senzoru Portenta a reset pin kamery a vypnuto automatické otáčení, když je sklon (pitch) IMU blízko 90°/270°.
Zpracování obrazu a systém:
Opravena chyba kontroly hranic v obrazovém filtru, hardfault při vypínání D-cache, bootování na deskách bez SD karty, chyba
load_to_fbutf.load(), přetečení zásobníku u detekce osob (zásobník H7 zvýšen na ≥12 KB) a offsety USB deskriptorů pro high-speed režim na OpenMV 4 Plus.
Hardware a podpora desek¶
Arduino Portenta H7 — počáteční zprovoznění desky (konfigurace hodin/OSC/HSE STM32H747, hlavičky CMSIS, ADC, SDRAM, Arduino USB PID).
HIMAX HM01B0 — nový ovladač monochromatické kamery (Bayer, hodiny z externího oscilátoru).
OV7690 — nový ovladač kamery.
LSM6DS3 IMU — OpenMV 4 / Portenta.
Přelomové změny API¶
Uživatelsky viditelné přelomové změny API mezi v3.6.0 a v3.6.1. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.
Každá změna je označena svým dopadem:
minor — úzké API; ovlivní pouze skripty, které jej používaly.
behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.
Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete jen přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.
sensor.set_framerate() odstraněna (minor)¶
Prázdná zástupná funkce sensor.set_framerate() byla odstraněna; její volání nyní vyvolá AttributeError. Volání odstraňte a časování snímků řiďte místo toho pomocí framesize/expozice. (Funkční set_framerate() je znovu zavedena v v4.0.2.)
Commity: 705e98f91
TensorFlow odstraněn na OpenMV Cam M7 (minor)¶
TensorFlow (modul tf) byl zakázán na OpenMV Cam M7 / OpenMV 3 (již se nevejde). import tf na M7 selže — pro TensorFlow použijte kameru třídy H7. (tf je znovu povolen na F7 v v3.6.3.)
Commity: 2ae875077
set_pixformat() / set_framesize() vrací None (behavior)¶
sensor.set_pixformat() a sensor.set_framesize() nyní vrací None místo True a nepodporovaný formát pixelů nyní vyvolá ValueError místo assertion. Kód, který kontroloval návratovou hodnotu (např. if sensor.set_pixformat(...):), to musí přestat dělat, a kód, který zachytával AssertionError pro nepodporované formáty, musí zachytávat ValueError.
Commity: f314ac4e7
lens_corr() / linpolar() / logpolar() vyžadují sudé rozměry (behavior)¶
image.lens_corr() a image.linpolar() / image.logpolar() nyní vyžadují sudou šířku a výšku obrazu a při lichých rozměrech vyvolají chybu. Před voláním těchto metod obraz ořízněte nebo změňte jeho velikost na sudé rozměry.
Kontrolní seznam migrace¶
Pro čistý přenos na v3.6.1 je typická práce následující:
Odstraňte volání
sensor.set_framerate()(odstranění set_framerate).Přesuňte úlohy TensorFlow z OpenMV Cam M7 (změna TensorFlow na M7).
Přestaňte se spoléhat na návratovou hodnotu
set_pixformat()/set_framesize()a zachytávejteValueErrorpro nepodporované formáty pixelů (změna návratové hodnoty).Zajistěte sudé rozměry obrazu před voláním
lens_corr()/linpolar()/logpolar()(požadavek na sudé rozměry).
Všechny ostatní skripty běží beze změny.