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.