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.