v2.7.0¶
v2.7.0 modernizează API-ul sensor de amplificare automată / expunere automată / balans de alb folosind unități fizice (dB / microsecunde), revizuiește corelația de fază find_displacement() (adăugând rotație/scalare) și adaugă get_similarity() (SSIM), chrominvar() / illuminvar(), tampoane de cadre suplimentare și o bibliotecă MQTT. Este o versiune mare cu modificări incompatibile — citiți modificările incompatibile de mai jos.
Aspecte importante¶
API senzor modern —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()folosesc acum dB / microsecunde, cu funcțiile corespunzătoareget_gain_db()/get_exposure_us()/get_rgb_gain_db().Corelație de fază —
find_displacement()refăcut cu rotație / scalare șifind_rotscale()/linpolar()/logpolar().SSIM — similaritate structurală
image.get_similarity().Tampoane de cadre suplimentare —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — o nouă bibliotecă MQTT.
Incompatibil: API-ul senzorului pentru amplificare/expunere/balans de alb,
find_displacement()/ dimensiunile de cadru FFT,find_number(), instrumentele de firmware WINC șiz_rotation()pentru AprilTag s-au modificat toate — consultați modificările incompatibile.
Funcționalități noi¶
Senzor — s-au adăugat
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), un argumentgain_db_ceilinglaset_auto_gain(), suporthmirror/vflippentru MT9V034 șisensor.alloc_extra_fb()/sensor.dealloc_extra_fb()pentru tampoane de cadre suplimentare în RAM.Imagine — s-au adăugat
remove_shadows(),min()/max()(diferențiere de cadre),get_similarity()(SSIM) cu un exemplu de similaritate structurală,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), argumentele threshold / offset / invert la filtrele adaptivemean()/mode()/median()/midpoint(),len()/ indexare pe obiectul keypoints și un accesor.match()pe obiectul de potrivire a punctelor-cheie.Biblioteci / rețea — s-au adăugat o bibliotecă MQTT (cu un exemplu MQTT prin WiFi) și un mod
network.WINC.MODE_BSPpentru programarea firmware-ului WINC prin UART-ul de depanare.Exemple — s-au adăugat exemplele de consum redus
deep_sleep.py/stop_mode.py, flux optic avansat și scripturi exemplu liniar/log-polar; firmware-ul analizează acumuart.inila pornire pentru a activa un REPL UART.
Alte modificări și îmbunătățiri¶
get_regression()a câștigat argumentelearea_threshold/pixels_thresholdși o regresie robustă mai rapidă (pentru urmărirea liniei / curse);get_pixel()acceptă acum imagini Bayer; s-au adăugat bazele pentru STM32H7 (anteturi CMSIS / HAL / bootloader — placa H7 nu este încă utilizabilă); s-a actualizat firmware-ul WINC1500 inclus (19.4.4 / 19.5.2).
Remedieri de erori¶
Imagistică:
S-au remediat eroarea de depășire a limitelor în căutarea diamant din
find_template(), coruperealogpolar/linpolarșiilluminvar()care o lua razna la valori de culoare apropiate de zero.
Senzor și sistem:
S-au remediat erorile de control automat al amplificării, s-a restaurat dimensiunea
MAIN_FBlasnapshot()(astfel încâtcopy_to_fbla o rezoluție diferită, redimensionarea FB și gruparea fluxului optic funcționează din nou), timeout-ulgethostbynameal WINC, ștergerea stăriipydfupe bootloader-ul H7 și modurile de consum redus stop/standby.
Suport pentru hardware și plăci¶
STM32H7 — baze (CMSIS / HAL / bootloader); placa OpenMV H7 nu este încă utilizabilă în această versiune.
WINC1500 — firmware inclus actualizat.
Modificări incompatibile ale API-ului¶
Modificări incompatibile ale API-ului vizibile pentru utilizator între v2.6.0 și v2.7.0. Domeniu: modulele C Python din modules/ și bibliotecile Python din scripts/libraries/.
Fiecare modificare este etichetată cu impactul său:
major — afectează majoritatea scripturilor care au folosit funcționalitatea; va trebui să adaptați codul.
minor — API restrâns; afectează doar scripturile care l-au folosit.
behavior — același API, rezultate diferite; reverificați scripturile reglate.
Modificările sunt grupate după impact în această ordine. Dacă vreți doar să adaptați codul, treceți la lista de verificare pentru migrare de la final. Fiecare hash de commit duce la diff-ul său pe GitHub.
sensor.set_auto_gain() refăcut pentru dB (major)¶
sensor.set_auto_gain() nu mai acceptă argumentul întreg value= și nu mai returnează True / False. Folosiți sensor.set_auto_gain(False, gain_db=...) (o valoare dB în virgulă mobilă), citiți-o înapoi cu noua sensor.get_gain_db() și încadrați apelul într-un try / except, deoarece eșecul generează acum ValueError.
Commits: b906c5f19
sensor.set_auto_exposure() refăcut pentru microsecunde (major)¶
sensor.set_auto_exposure() nu mai acceptă argumentul întreg value= și nu mai returnează True / False. Folosiți sensor.set_auto_exposure(False, exposure_us=...), citiți-o înapoi cu noua sensor.get_exposure_us() și tratați ValueError generat la eșec.
Commits: 7be0a7a18
find_displacement() / dimensiunile de cadru FFT revizuite (major)¶
Corelația de fază a fost revizuită. image.find_displacement() returnează acum un obiect de deplasare (cu x_translation() / y_translation() — fostele x_offset / y_offset — plus rotation() / scale() și noile argumente logpolar / fix_rotation_scale); obiectul separat de rotație-scalare a fost eliminat și s-a adăugat find_rotscale(). Constantele de dimensiune a cadrului FFT au fost redenumite/eliminate: sensor.B40x30 a fost eliminat complet, iar sensor.B64x32 / B64x64 au fost redenumite în majuscule sensor.B64X32 / B64X64 (cu noile B128X64 / B128X128).
sensor.set_auto_whitebal() refăcut pentru dB (minor)¶
sensor.set_auto_whitebal() și-a înlocuit argumentul întreg value=[r, g, b] cu rgb_gain_db=[r, g, b] (dB în virgulă mobilă) și returnează acum None (generând ValueError la eșec) în loc de True / False. Folosiți noua sensor.get_rgb_gain_db() pentru a citi înapoi amplificările.
Commits: 30ecbdc4f
set_hmirror() / set_vflip() returnează None (minor)¶
sensor.set_hmirror() și sensor.set_vflip() returnează acum None și generează ValueError la eșec în loc să returneze o stare True / False. Eliminați orice cod care se ramifică în funcție de valoarea lor de retur.
Commits: aeb023804
Instrumentele de firmware WINC necesită o cale de fișier (minor)¶
Instrumentele de firmware network.WINC s-au modificat: wlan.fw_dump() / wlan.fw_update() primesc acum un argument obligatoriu cu calea fișierului de firmware, iar WINC este deschis într-un mod de programare (network.WINC(mode=...)). Actualizați apelurile fără argumente pentru a transmite o cale (de ex. wlan.fw_update("/winc_19_5_2.bin")).
Commits: fcc3b0b9c
image.find_number() necesită o regiune de interes (ROI) de 28x28 (behavior)¶
image.find_number() (LeNet) necesită acum o regiune de interes (ROI) de exact 28x28 care încape în interiorul imaginii și generează o eroare în caz contrar (în loc să ruleze pe o ROI arbitrară/de imagine completă). Transmiteți o valoare explicită roi=(x, y, 28, 28).
Commits: 4d09a13f3
Semnul z_rotation() pentru AprilTag a fost inversat (behavior)¶
z_rotation() pentru AprilTag (și rotation() aferent) folosește acum o convenție de coordonate dreptaci, deci unghiul returnat este negat față de versiunile anterioare. Scripturile care depind de vechiul semn trebuie să inverseze valoarea sau să-și ajusteze calculele de unghi.
Commits: 7673aaf74
Lista de verificare pentru migrare¶
Pentru o adaptare curată la v2.7.0, munca tipică este:
Adaptați
set_auto_gain()lagain_db=+get_gain_db()și tratațiValueError(refacerea amplificării automate).Adaptați
set_auto_exposure()laexposure_us=+get_exposure_us()(refacerea expunerii automate).Actualizați
find_displacement()la obiectul de deplasare și redenumiți constantele de dimensiune a cadrului FFT (revizuirea find_displacement).Adaptați
set_auto_whitebal()largb_gain_db=+get_rgb_gain_db()(refacerea balansului de alb) și nu mai verificați valoarea de retur aset_hmirror()/set_vflip()(modificarea mirror/flip).Transmiteți o cale de firmware instrumentelor
fw_*ale WINC (modificarea instrumentelor WINC).Transmiteți o
roide 28x28 cătrefind_number()(modificarea find_number) și ajustați calculele de unghi pentru AprilTag pentru semnul inversatz_rotation()(modificarea z_rotation).
Toate celelalte scripturi rulează nemodificate.