v3.3.0¶
v3.3.0 este o versiune majoră. Adaugă suport complet pentru camera termică FLIR Lepton printr-o nouă interfață sensor.ioctl() și palete de culori, un modul de ieșire video SPI tv, modul declanșat cu obturator global, un set mare de noi metode de desenare/analiză image (gamma_corr(), draw_ellipse(), draw_edges(), multe proprietăți de blob), precum și noi biblioteci ToF / motoare / linalg. API-ul cpufreq a fost rescris, iar sensor.set_framesize() ridică acum o excepție — citește modificările incompatibile de mai jos.
Aspecte importante¶
FLIR Lepton — suport complet pentru camera termică prin noua interfață
sensor.ioctl(), palete de culori șiimage.to_rainbow().Modulul
tv— ieșire video SPI TV / compozit.Mod declanșat cu obturator global — captură declanșată MT9V034 prin
sensor.ioctl().Imagistică —
gamma_corr(),draw_ellipse(),draw_edges(), amestecare alfa îndraw_image()și multe proprietăți noi de blob.Biblioteci noi — distanță ToF VL53L1X, driver de motor TB6612, micro-linalg.
Incompatibil: API-ul
cpufreqa fost rescris,sensor.set_framesize()ridică acum o excepție la eșec,sensor.alloc_extra_fb()a eliminat Bayer/JPEG, iar argumentele poziționale aleimage.replace()s-au deplasat — vezi modificările incompatibile.
Funcționalități noi¶
FLIR Lepton — s-a adăugat
sensor.ioctl()pentru control specific senzorului și un set complet de ioctl-uri Lepton (radiometrie, reîmprospătare/rezoluție, run-command, set/get atribut, temperatură FPA/AUX în °C, mod/interval de măsurare, lățime/înălțime),sensor.set_color_palette()/sensor.get_color_palette()cusensor.PALETTE_RAINBOW/PALETTE_IRONBOW,image.to_rainbow()și scripturi de exemplu Lepton (27-Lepton).Mod declanșat —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEpentru captura declanșată cu obturator global MT9V034, cu exemple de FPS ridicat și mod declanșat.Modulul
tv— s-au adăugat legături pentru ieșire video SPI TV / compozit.Imagistică — s-au adăugat
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(), amestecare alfa îndraw_image(), un cuvânt cheiemask=înclear(), s-au readăugatmask_rectangle()/mask_circle()/mask_ellipse(), cuvinte cheie de rotație / hmirror / vflip îndraw_string()/draw_text(), un cuvânt cheietranspose(și aliasurileassign/set) înreplace(),x_scale/y_scaleîncopy()pluscrop()/scale(), un constructorImage()din dimensiuni, formatul de pixelsensor.BINARY, funcții exportate de conversie a spațiului de culoare și multe proprietăți noi de blob (corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, rotație).Biblioteci — s-au adăugat driverul senzorului de distanță ToF
vl53l1x, driverul de motortb6612(cu exemple Motor-Shield pentru motor DC și pas cu pas) și o bibliotecă micro-linalg (ulinalg/umatrix).S-a actualizat FatFS la FF13C (compatibil exFAT).
Alte modificări și îmbunătățiri¶
S-a îmbunătățit calitatea JPEG implicită (valoarea de mijloc între joasă și ridicată în locul unei valori codificate fix); operațiile de imagine pe loc nu mai necesită repetarea imaginii ca prim argument;
draw_string()acceptă valori de scalare neîntregi.
Remedieri de erori¶
Camera și senzorii:
S-au remediat blocarea la pornire a Lepton 3.5 (timeout + recuperare) și fiabilitatea resetării, MT9V034
set_framesize()înainte deset_pixformat()(ordinea apelurilor nu mai contează), MT9V034 WVGA pe STM32H7, intervalul de expunere automată MT9V034 și actualizările registrelor shadow, precum și eroarea ADC a H7.
Imagistică:
S-au remediat un acces de memorie invalid în
find_apriltags(),copy()la copierea unei imagini scalate în framebuffer-ul principal, alocarea framebuffer-ului pentruto_grayscale()/to_rgb565(),len()al obiectului keypoint, gestionarea limitelor MCU JPEG, analiza listei de praguri înbinary()șidraw_keypoints()care acceptă tupluri de puncte-cheie.
Sistem:
S-au remediat scurgerile de dezechilibru mark/free
fb_allocîn metodeleimage/fir/lcd/tv/nn, s-a făcut capy_assertsă elibereze memoria framebuffer la excepțiile prinse (#417), s-a șters indicatorul de depășire UART (ORE) astfel încât depășirile să nu mai blocheze citirile UART, s-a remediat handlerul IRQ al RTC și s-a remediat utilitarul Windowscascade_convert.py.
Suport hardware și plăci¶
Camera termică FLIR Lepton.
TV shield — ieșire video SPI TV / compozit.
Mod declanșat cu obturator global (MT9V034).
Modificări incompatibile de API¶
Modificări de API vizibile pentru utilizator între v3.2.0 și v3.3.0. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.
Fiecare modificare este etichetată cu impactul său:
major — afectează majoritatea scripturilor care au folosit funcționalitatea; va trebui să portezi codul.
minor — API restrâns; afectează doar scripturile care l-au folosit.
behavior — același API, rezultate diferite; reverifică scripturile reglate.
Modificările sunt grupate după impact în această ordine. Dacă vrei doar să-ți portezi codul, sari la lista de verificare pentru migrare de la final. Fiecare hash de commit duce la diferența sa pe GitHub.
API-ul cpufreq rescris (major)¶
Modulul cpufreq a fost rescris pentru suport H7. Constantele cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ și cpufreq.get_frequency() au fost eliminate. cpufreq.set_frequency() acceptă acum un întreg simplu în MHz (de ex. cpufreq.set_frequency(120)), iar cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() au fost adăugate.
Commit-uri: 6babf84a1
Argumentele poziționale ale image.replace() s-au deplasat (minor)¶
image.replace() a primit un argument transpose, deplasând argumentul pozițional mask de la poziția 4 la poziția 5. Codul care transmitea mask pozițional (de ex. img.replace(src, hmirror, vflip, mask)) trebuie să treacă la forma cu cuvânt cheie img.replace(src, mask=mask).
Commit-uri: dbe7bf059
sensor.alloc_extra_fb() nu mai acceptă Bayer/JPEG (minor)¶
sensor.alloc_extra_fb() nu mai acceptă sensor.BAYER sau sensor.JPEG (acum suportă și sensor.BINARY). Codul care aloca framebuffere suplimentare în format Bayer sau JPEG trebuie să folosească GRAYSCALE / RGB565 (sau să aloce tamponul în alt mod).
Commit-uri: f9e6b3fe0
sensor.set_framesize() ridică o excepție la eșec (behavior)¶
sensor.set_framesize() ridică acum o excepție ValueError când dimensiunea cadrului nu este suportată, în loc să returneze False. Codul care verifica valoarea de retur False trebuie în schimb să prindă excepția ValueError.
Commit-uri: b0442633e
Lista de verificare pentru migrare¶
Pentru o portare curată la v3.3.0, munca tipică este:
Portează codul
cpufreqlaset_frequency()cu întreg-MHz șiget_current_frequencies()/get_supported_frequencies()(rescrierea cpufreq).Transmite
maskcătreimage.replace()ca cuvânt cheie (modificarea replace).Alocă framebuffere suplimentare ca
GRAYSCALE/RGB565în loc de Bayer/JPEG (modificarea alloc_extra_fb).Prinde
ValueErrorîn jurulsensor.set_framesize()în loc să verificiFalse(modificarea set_framesize).
Toate celelalte scripturi rulează neschimbate.