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 a image.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é funkcegamma_corr(), draw_ellipse(), draw_edges(), alfa míchání v draw_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í cpufreq bylo 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í argumenty image.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() s sensor.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_MODE pro 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í v draw_image(), klíčové slovo mask= u clear(), znovu přidány mask_rectangle() / mask_circle() / mask_ellipse(), klíčová slova pro rotaci / hmirror / vflip u draw_string() / draw_text(), klíčové slovo transpose (a aliasy assign / set) u replace(), copy() s x_scale / y_scale a také crop() / scale(), konstruktor Image() z rozměrů, pixformat sensor.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č motoru tb6612 (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řed set_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 u to_grayscale() / to_rgb565(), len() objektu keypoint, zpracování hranic JPEG MCU, parsování seznamu prahů u binary() a přijímání n-tic klíčových bodů u draw_keypoints().

Systém:

  • Opraveny úniky paměti způsobené nevyrovnaným mark/free v fb_alloc napříč metodami image / fir / lcd / tv / nn, py_assert nyní 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ástroj cascade_convert.py pro 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:

  1. Přenést kód cpufreq na celočíselné MHz set_frequency() a get_current_frequencies() / get_supported_frequencies() (přepracování cpufreq).

  2. Předat mask do image.replace() jako klíčové slovo (změna replace).

  3. Alokovat extra framebuffery jako GRAYSCALE / RGB565 namísto Bayer/JPEG (změna alloc_extra_fb).

  4. Zachytávat ValueError kolem sensor.set_framesize() namísto kontroly na False (změna set_framesize).

Všechny ostatní skripty běží beze změny.