v3.6.1¶
v3.6.1 este o versiune importantă. Introduce modulul imu (LSM6DS3), o suită de noi API-uri getter pentru sensor cu auto-rotație ghidată de IMU, corecție de perspectivă în 4 puncte rotation_corr() și aduce în funcțiune Arduino Portenta H7 cu camerele HIMAX HM01B0 și OV7690. Mai multe API-uri sensor / image s-au modificat, iar TensorFlow a fost eliminat pe M7 — citiți modificările incompatibile de mai jos.
Puncte importante¶
Modulul
imu— accelerometru / giroscop / temperatură / roll / pitch pe LSM6DS3 (OpenMV 4 / Portenta).Gettere pentru senzor + auto-rotație —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation()și rotirea instantaneelor ghidată de IMU.Corecție de perspectivă —
rotation_corr()primește argumentelefovșicorners(4 puncte).Hardware nou — Arduino Portenta H7, HIMAX HM01B0 și camera OV7690.
Incompatibil:
set_pixformat()/set_framesize()returnează acumNone,sensor.set_framerate()a fost eliminat, TensorFlow a fost eliminat pe M7, iarlens_corr()/linpolar()necesită acum dimensiuni pare — consultați modificările incompatibile.
Funcționalități noi¶
imu— un nou modul IMU:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch()șiimu.sleep()(LSM6DS3 pe OpenMV 4 / Portenta).Gettere pentru senzor — adăugate
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose()șiset_auto_rotation()/get_auto_rotation().Auto-rotație —
sensor.snapshot()folosește IMU-ul pentru a întoarce / oglindi / transpune cadrele atunci când auto-rotația este activată.rotation_corr()— adăugate argumentelefovșicorners(perspectivă în 4 puncte), cu exemple de corecție de perspectivă.lcd.init()— adăugat argumentulbgr.collections.deque— activat în compilarea MicroPython.Adăugate constantele de id
sensor.OV7690șisensor.HM01B0și un exemplu de filtru de imagine de tip numpy folosindulab.
Alte modificări și îmbunătățiri¶
Au fost optimizate semnificativ filtrele de imagine (median / mode / mean / …),
find_circles()și corecția de obiectiv;alloc_extra_fbpoate aloca acum orice număr de octeți; modelul de detectare a persoanelor a fost reconstruit cu o nouă operație average-pool.
Corecturi de erori¶
Cameră și senzori:
Au fost corectate
sleep()pentru OV2640 (acum folosește registrul de standby COM2 în loc de pinul de power-down), configurarea pinului FSYNC, polaritățile HSYNC/VSYNC ale HM01B0 și adresa/scanarea I2C, GPIO-ul de power-down al senzorului Portenta și pinul de reset al camerei, și a fost dezactivată auto-rotația când pitch-ul IMU este aproape de 90°/270°.
Imagistică și sistem:
Au fost corectate o eroare de verificare a limitelor într-un filtru de imagine, un hardfault la dezactivarea D-cache, pornirea pe plăci fără card SD, o eroare
load_to_fblatf.load(), depășirea stivei la detectarea persoanelor (stiva H7 mărită la ≥12 KB) și offset-urile descriptorului USB pentru modul high-speed pe OpenMV 4 Plus.
Hardware și suport pentru plăci¶
Arduino Portenta H7 — punere inițială în funcțiune a plăcii (configurare clock/OSC/HSE STM32H747, headere CMSIS, ADC, SDRAM, PID USB Arduino).
HIMAX HM01B0 — nou driver de cameră monocromă (Bayer, clock cu oscilator extern).
OV7690 — nou driver de cameră.
LSM6DS3 IMU — OpenMV 4 / Portenta.
Modificări incompatibile ale API-ului¶
Modificări incompatibile ale API-ului vizibile pentru utilizator între v3.6.0 și v3.6.1. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.
Fiecare modificare este etichetată cu impactul său:
minor — API restrâns; afectează doar scripturile care l-au folosit.
behavior — același API, rezultate diferite; reverificați scripturile ajustate.
Modificările sunt grupate după impact în această ordine. Dacă doriți doar să vă portați codul, săriți la lista de verificare pentru migrare de la final. Fiecare hash de commit trimite la diff-ul său de pe GitHub.
sensor.set_framerate() eliminat (minor)¶
Stub-ul fără efect sensor.set_framerate() a fost eliminat; apelarea sa generează acum AttributeError. Eliminați apelul și controlați temporizarea cadrelor prin framesize/expunere în schimb. (Un set_framerate() funcțional este reintrodus în v4.0.2.)
Commit-uri: 705e98f91
TensorFlow eliminat pe OpenMV Cam M7 (minor)¶
TensorFlow (modulul tf) a fost dezactivat pe OpenMV Cam M7 / OpenMV 3 (nu mai încape). import tf pe M7 eșuează — folosiți o cameră din clasa H7 pentru TensorFlow. (tf este reactivat pe F7 în v3.6.3.)
Commit-uri: 2ae875077
set_pixformat() / set_framesize() returnează None (behavior)¶
sensor.set_pixformat() și sensor.set_framesize() returnează acum None în loc de True, iar un format de pixel nesuportat generează acum un ValueError în loc de o aserțiune. Codul care verifica valoarea returnată (de ex. if sensor.set_pixformat(...):) nu trebuie să mai facă acest lucru, iar codul care prindea AssertionError pentru formate nesuportate trebuie să prindă ValueError.
Commit-uri: f314ac4e7
lens_corr() / linpolar() / logpolar() necesită dimensiuni pare (behavior)¶
image.lens_corr() și image.linpolar() / image.logpolar() necesită acum lățime și înălțime pare ale imaginii și generează o eroare pentru dimensiuni impare. Decupați sau redimensionați imaginea la dimensiuni pare înainte de a apela aceste metode.
Lista de verificare pentru migrare¶
Pentru o portare curată la v3.6.1, munca tipică este:
Eliminați apelurile
sensor.set_framerate()(eliminarea set_framerate).Mutați sarcinile TensorFlow de pe OpenMV Cam M7 (modificarea TensorFlow pe M7).
Nu vă mai bazați pe valoarea returnată de
set_pixformat()/set_framesize()și prindețiValueErrorpentru formate de pixel nesuportate (modificarea valorii returnate).Asigurați-vă că imaginea are dimensiuni pare înainte de
lens_corr()/linpolar()/logpolar()(cerința de dimensiuni pare).
Toate celelalte scripturi rulează nemodificate.