v2.7.0

v2.7.0 modernizuje API senzoru sensor pro automatický zisk / automatickou expozici / vyvážení bílé na fyzikální jednotky (dB / mikrosekundy), přepracovává fázovou korelaci find_displacement() (s přidáním rotace/měřítka) a přidává get_similarity() (SSIM), chrominvar() / illuminvar(), další framebuffery a knihovnu MQTT. Jde o velké vydání s nekompatibilními změnami — přečtěte si nekompatibilní změny níže.

Hlavní novinky

  • Moderní API senzoruset_auto_gain() / set_auto_exposure() / set_auto_whitebal() nyní používají dB / mikrosekundy, s odpovídajícími get_gain_db() / get_exposure_us() / get_rgb_gain_db().

  • Fázová korelace — přepracovaný find_displacement() s rotací / měřítkem a find_rotscale() / linpolar() / logpolar().

  • SSIM — strukturální podobnost image.get_similarity().

  • Další framebufferysensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — nová knihovna MQTT.

  • Nekompatibilní: změnilo se API senzoru pro zisk/expozici/vyvážení bílé, find_displacement() / formáty snímku FFT, find_number(), nástroje firmwaru WINC a AprilTag z_rotation() — viz nekompatibilní změny.

Nové funkce

  • Senzor — přidány sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), klíčové slovo gain_db_ceiling u set_auto_gain(), podpora hmirror / vflip u MT9V034 a sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() pro další framebuffery v RAM.

  • Obraz — přidány remove_shadows(), min() / max() (rozdíl snímků), get_similarity() (SSIM) s příkladem strukturální podobnosti, chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), klíčová slova threshold / offset / invert u adaptivních filtrů mean() / mode() / median() / midpoint(), len() / indexování u objektu keypoints a přístupový prvek .match() u objektu shody klíčových bodů.

  • Knihovny / síť — přidána knihovna MQTT (s příkladem WiFi MQTT) a režim network.WINC.MODE_BSP pro programování firmwaru WINC přes ladicí UART.

  • Příklady — přidány nízkopříkonové deep_sleep.py / stop_mode.py, pokročilý optický tok a příkladové skripty s lineárně/log-polárními souřadnicemi; firmware nyní při startu parsuje uart.ini pro povolení REPL UART.

Další změny a vylepšení

  • get_regression() získal klíčová slova area_threshold / pixels_threshold a rychlejší robustní regresi (pro sledování čáry / závodění); get_pixel() nyní podporuje obrazy Bayer; přidán základ pro STM32H7 (hlavičky CMSIS / HAL / bootloader — deska H7 zatím není použitelná); aktualizován přibalený firmware WINC1500 (19.4.4 / 19.5.2).

Opravy chyb

Zpracování obrazu:

  • Opravena chyba přístupu mimo meze při diamantovém vyhledávání ve find_template(), poškození logpolar / linpolar a divoké chování illuminvar() u barevných hodnot blízkých nule.

Senzor a systém:

  • Opraveny chyby automatického řízení zisku, obnovena velikost MAIN_FB při snapshot() (takže copy_to_fb v jiném rozlišení, změna velikosti FB a poolování optického toku opět fungují), timeout gethostbyname u WINC, mazání stavu pydfu v bootloaderu H7 a nízkopříkonové režimy stop/standby.

Hardware a podpora desek

  • STM32H7 — základ (CMSIS / HAL / bootloader); deska OpenMV H7 v tomto vydání zatím není použitelná.

  • WINC1500 — aktualizovaný přibalený firmware.

Nekompatibilní změny API

Uživatelsky viditelné nekompatibilní změny API mezi v2.6.0 a v2.7.0. Rozsah: Python C-moduly v modules/ a knihovny Pythonu 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 přizpůsobit 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řizpůsobit svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

sensor.set_auto_gain() přepracován na dB (major)

sensor.set_auto_gain() již nepřijímá celočíselné klíčové slovo value= a již nevrací True / False. Použijte sensor.set_auto_gain(False, gain_db=...) (hodnota dB typu float), zpětně ji načtěte novou sensor.get_gain_db() a obalte volání do try / except, protože selhání nyní vyvolá ValueError.

Commity: b906c5f19

sensor.set_auto_exposure() přepracován na mikrosekundy (major)

sensor.set_auto_exposure() již nepřijímá celočíselné klíčové slovo value= a již nevrací True / False. Použijte sensor.set_auto_exposure(False, exposure_us=...), zpětně ji načtěte novou sensor.get_exposure_us() a ošetřete ValueError vyvolaný při selhání.

Commity: 7be0a7a18

find_displacement() / formáty snímku FFT přepracovány (major)

Fázová korelace byla přepracována. image.find_displacement() nyní vrací objekt posunutí (s x_translation() / y_translation() — dříve x_offset / y_offset — plus rotation() / scale() a nová klíčová slova logpolar / fix_rotation_scale); samostatný objekt rot-scale byl odstraněn a byl přidán find_rotscale(). Konstanty formátu snímku FFT byly přejmenovány/odstraněny: sensor.B40x30 byl zcela odstraněn a sensor.B64x32 / B64x64 byly přejmenovány na velká písmena sensor.B64X32 / B64X64 (s novými B128X64 / B128X128).

Commity: c78f91b42, 213396d09

sensor.set_auto_whitebal() přepracován na dB (minor)

sensor.set_auto_whitebal() nahradil své celočíselné klíčové slovo value=[r, g, b] za rgb_gain_db=[r, g, b] (dB typu float) a nyní vrací None (při selhání vyvolává ValueError) místo True / False. Pro zpětné načtení zisků použijte novou sensor.get_rgb_gain_db().

Commity: 30ecbdc4f

set_hmirror() / set_vflip() vracejí None (minor)

sensor.set_hmirror() a sensor.set_vflip() nyní vracejí None a při selhání vyvolávají ValueError místo vracení stavu True / False. Odstraňte veškerý kód, který se větví podle jejich návratové hodnoty.

Commity: aeb023804

Nástroje firmwaru WINC vyžadují cestu k souboru (minor)

Nástroje firmwaru network.WINC se změnily: wlan.fw_dump() / wlan.fw_update() nyní vyžadují povinný argument s cestou k souboru firmwaru a WINC se otevírá v programovacím režimu (network.WINC(mode=...)). Aktualizujte volání bez argumentů tak, aby předávala cestu (např. wlan.fw_update("/winc_19_5_2.bin")).

Commity: fcc3b0b9c

image.find_number() vyžaduje ROI 28x28 (behavior)

image.find_number() (LeNet) nyní vyžaduje přesně 28x28 ROI, které se vejde do obrazu, a jinak vyvolá chybu (místo spuštění na libovolném ROI / ROI celého obrazu). Předejte explicitní roi=(x, y, 28, 28).

Commity: 4d09a13f3

Znaménko AprilTag z_rotation() obráceno (behavior)

AprilTag z_rotation() (a související rotation()) nyní používá pravotočivou konvenci souřadnic, takže vrácený úhel má opačné znaménko než v předchozích vydáních. Skripty, které závisí na starém znaménku, musí hodnotu invertovat nebo upravit svůj výpočet úhlu.

Commity: 7673aaf74

Kontrolní seznam migrace

Pro čistý přechod na v2.7.0 je obvyklá práce následující:

  1. Přepište set_auto_gain() na gain_db= + get_gain_db() a ošetřete ValueError (přepracování automatického zisku).

  2. Přepište set_auto_exposure() na exposure_us= + get_exposure_us() (přepracování automatické expozice).

  3. Aktualizujte find_displacement() na objekt posunutí a přejmenujte konstanty formátu snímku FFT (přepracování find_displacement).

  4. Přepište set_auto_whitebal() na rgb_gain_db= + get_rgb_gain_db() (přepracování vyvážení bílé) a přestaňte kontrolovat návratovou hodnotu set_hmirror() / set_vflip() (změna zrcadlení/převrácení).

  5. Předejte cestu k firmwaru nástrojům WINC fw_* (změna nástrojů WINC).

  6. Předejte 28x28 roi do find_number() (změna find_number) a upravte výpočet úhlu AprilTag kvůli obrácenému znaménku z_rotation() (změna z_rotation).

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