v3.3.0¶
v3.3.0 je obrovské vydání. Přidává plnou podporu termokamery FLIR Lepton s novým rozhraním sensor.ioctl() a barevnými paletami, modul tv pro SPI video výstup, režim spouštění s globální závěrkou (global-shutter), velkou dávku nových metod kreslení/analýzy z modulu image (gamma_corr(), draw_ellipse(), draw_edges(), mnoho vlastností blobů) a nové knihovny ToF / motor / linalg. Rozhraní cpufreq bylo přepracováno a sensor.set_framesize() nyní vyvolává výjimku — přečtěte si změny narušující kompatibilitu níže.
Hlavní novinky¶
FLIR Lepton — plná podpora termokamery prostřednictvím nového rozhraní
sensor.ioctl(), barevné palety aimage.to_rainbow().Modul
tv— SPI TV / kompozitní video výstup.Režim spouštění s globální závěrkou — spouštěné snímání MT9V034 přes
sensor.ioctl().Obrazové funkce —
gamma_corr(),draw_ellipse(),draw_edges(), alfa míchání vdraw_image()a mnoho nových vlastností blobů.Nové knihovny — VL53L1X ToF měření vzdálenosti, ovladač motoru TB6612, micro-linalg.
Narušující změny: rozhraní
cpufreqbylo přepracováno,sensor.set_framesize()nyní při selhání vyvolává výjimku,sensor.alloc_extra_fb()přestala podporovat Bayer/JPEG a poziční argumentyimage.replace()se posunuly — viz narušující změny.
Nové funkce¶
FLIR Lepton — přidána
sensor.ioctl()pro ovládání specifické pro senzor a kompletní sada ioctl příkazů pro Lepton (radiometrie, obnovování/rozlišení, run-command, nastavení/získání atributu, teplota FPA/AUX ve °C, režim/rozsah měření, šířka/výška),sensor.set_color_palette()/sensor.get_color_palette()ssensor.PALETTE_RAINBOW/PALETTE_IRONBOW,image.to_rainbow()a ukázkové skripty pro Lepton (27-Lepton).Režim spouštění —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEpro spouštěné snímání s globální závěrkou MT9V034, s ukázkami vysokého FPS a režimu spouštění.Modul
tv— přidány vazby pro SPI TV / kompozitní video výstup.Obrazové funkce — přidány
image.gamma_corr(),image.draw_ellipse(),image.draw_edges(), alfa míchání vdraw_image(), klíčové slovomask=uclear(), znovu přidánymask_rectangle()/mask_circle()/mask_ellipse(), klíčová slova pro rotaci / hmirror / vflip udraw_string()/draw_text(), klíčové slovotranspose(a aliasyassign/set) ureplace(),copy()sx_scale/y_scalea takécrop()/scale(), konstruktorImage()z rozměrů, pixformatsensor.BINARY, exportované funkce pro převod barevných prostorů a mnoho nových vlastností blobů (corners,perimeter,roundness,elongation,extent,compactness,solidity,convexity,enclosing_circle,enclosed_ellipse, rotace).Knihovny — přidán ovladač senzoru vzdálenosti ToF
vl53l1x, ovladač motorutb6612(s ukázkami pro DC motor a krokový motor s Motor-Shield) a knihovna micro-linalg (ulinalg/umatrix).Aktualizace FatFS na FF13C (s podporou exFAT).
Další změny a vylepšení¶
Zlepšena výchozí kvalita JPEG (střední hodnota mezi nízkou a vysokou namísto pevně zakódované hodnoty); operace s obrazem na místě již nevyžadují opakování obrazu jako prvního argumentu;
draw_string()přijímá neceločíselné hodnoty měřítka.
Opravy chyb¶
Kamera a senzory:
Opraveno zaseknutí Lepton 3.5 při startu (timeout + obnova) a spolehlivost resetu, MT9V034
set_framesize()předset_pixformat()(na pořadí volání již nezáleží), MT9V034 WVGA na STM32H7, rozsah automatické expozice MT9V034 a aktualizace stínových registrů a chyba ADC na H7.
Obrazové funkce:
Opraven neplatný přístup do paměti v
find_apriltags(),copy()při kopírování zmenšeného obrazu do hlavního framebufferu, alokace framebufferu uto_grayscale()/to_rgb565(),len()objektu keypoint, zpracování hranic JPEG MCU, parsování seznamu prahů ubinary()a přijímání n-tic klíčových bodů udraw_keypoints().
Systém:
Opraveny úniky paměti způsobené nevyrovnaným mark/free v
fb_allocnapříč metodamiimage/fir/lcd/tv/nn,py_assertnyní uvolňuje paměť framebufferu při zachycených výjimkách (#417), vymazán příznak přetečení UART (ORE), takže přetečení již neblokují čtení z UART, opraven obsluhovač IRQ pro RTC a opraven nástrojcascade_convert.pypro Windows.
Podpora hardwaru a desek¶
Termokamera FLIR Lepton.
TV shield — SPI TV / kompozitní video výstup.
Režim spouštění s globální závěrkou (MT9V034).
Narušující změny API¶
Změny API viditelné uživatelem mezi v3.2.0 a v3.3.0. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.
Každá změna je označena svým dopadem:
major — ovlivňuje většinu skriptů, které funkci používaly; budete muset upravit kód.
minor — úzké API; ovlivňuje 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.
Rozhraní cpufreq přepracováno (major)¶
Modul cpufreq byl přepracován pro podporu H7. Konstanty cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ a cpufreq.get_frequency() byly odstraněny. cpufreq.set_frequency() nyní přijímá prosté celé číslo v MHz (např. cpufreq.set_frequency(120)) a byly přidány cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies().
Commity: 6babf84a1
Poziční argumenty image.replace() posunuty (minor)¶
image.replace() získala argument transpose, čímž se poziční argument mask posunul z pozice 4 na pozici 5. Kód, který předával mask pozičně (např. img.replace(src, hmirror, vflip, mask)), musí přejít na podobu s klíčovým slovem img.replace(src, mask=mask).
Commity: dbe7bf059
sensor.alloc_extra_fb() již nepřijímá Bayer/JPEG (minor)¶
sensor.alloc_extra_fb() již nepřijímá sensor.BAYER ani sensor.JPEG (nyní také podporuje sensor.BINARY). Kód, který alokoval extra framebuffery ve formátu Bayer nebo JPEG, musí použít GRAYSCALE / RGB565 (nebo alokovat buffer jiným způsobem).
Commity: f9e6b3fe0
sensor.set_framesize() při selhání vyvolává výjimku (behavior)¶
sensor.set_framesize() nyní při nepodporovaném framesize vyvolá ValueError namísto vrácení False. Kód, který kontroloval návratovou hodnotu False, musí místo toho zachytávat výjimku ValueError.
Commity: b0442633e
Kontrolní seznam migrace¶
Pro čistý přechod na v3.3.0 typická práce zahrnuje:
Přenést kód
cpufreqna celočíselné MHzset_frequency()aget_current_frequencies()/get_supported_frequencies()(přepracování cpufreq).Předat
maskdoimage.replace()jako klíčové slovo (změna replace).Alokovat extra framebuffery jako
GRAYSCALE/RGB565namísto Bayer/JPEG (změna alloc_extra_fb).Zachytávat
ValueErrorkolemsensor.set_framesize()namísto kontroly naFalse(změna set_framesize).
Všechny ostatní skripty běží beze změny.