v2.7.0¶
v2.7.0 modernizuje API automatycznego wzmocnienia / automatycznej ekspozycji / balansu bieli modułu sensor, przechodząc na jednostki fizyczne (dB / mikrosekundy), gruntownie przerabia korelację fazową find_displacement() (dodając obrót/skalę) oraz dodaje get_similarity() (SSIM), chrominvar() / illuminvar(), dodatkowe bufory ramek i bibliotekę MQTT. To duże, przełomowe wydanie — przeczytaj poniższe zmiany przełomowe.
Najważniejsze zmiany¶
Nowoczesne API sensora —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()używają teraz dB / mikrosekund, wraz z odpowiadającymiget_gain_db()/get_exposure_us()/get_rgb_gain_db().Korelacja fazowa — przerobione
find_displacement()z obrotem / skalą orazfind_rotscale()/linpolar()/logpolar().SSIM — podobieństwo strukturalne
image.get_similarity().Dodatkowe bufory ramek —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — nowa biblioteka MQTT.
Przełomowe: zmieniły się API wzmocnienia/ekspozycji/balansu bieli sensora,
find_displacement()/ rozmiary ramek FFT,find_number(), narzędzia firmware WINC orazz_rotation()dla AprilTag — zobacz zmiany przełomowe.
Nowe funkcje¶
Sensor — dodano
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), słowo kluczowegain_db_ceilingwset_auto_gain(), obsługęhmirror/vflipdla MT9V034 orazsensor.alloc_extra_fb()/sensor.dealloc_extra_fb()dla dodatkowych buforów ramek w pamięci RAM.Image — dodano
remove_shadows(),min()/max()(różnicowanie ramek),get_similarity()(SSIM) wraz z przykładem podobieństwa strukturalnego,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), słowa kluczowe threshold / offset / invert w filtrach adaptacyjnychmean()/mode()/median()/midpoint(),len()/ indeksowanie na obiekcie keypoints oraz akcesor.match()na obiekcie dopasowania punktów kluczowych.Biblioteki / sieć — dodano bibliotekę MQTT (wraz z przykładem WiFi MQTT) oraz tryb
network.WINC.MODE_BSPdo programowania firmware WINC przez debugowy UART.Przykłady — dodano niskoenergetyczne
deep_sleep.py/stop_mode.py, zaawansowany przepływ optyczny oraz skrypty przykładowe liniowo/logarytmiczno-biegunowe; oprogramowanie układowe parsuje teraz przy starcieuart.ini, aby włączyć UART dla REPL.
Pozostałe zmiany i ulepszenia¶
get_regression()zyskało słowa kluczowearea_threshold/pixels_thresholdoraz szybszą, odporną regresję (do podążania za linią / wyścigów);get_pixel()obsługuje teraz obrazy Bayera; dodano podwaliny pod STM32H7 (nagłówki CMSIS / HAL / bootloader — płytka H7 nie jest jeszcze używalna); zaktualizowano dołączone firmware WINC1500 (19.4.4 / 19.5.2).
Poprawki błędów¶
Obrazowanie:
Naprawiono błąd wyjścia poza zakres w przeszukiwaniu rombowym
find_template(), uszkodzenielogpolar/linpolaroraz rozjeżdżanie sięilluminvar()przy wartościach kolorów bliskich zeru.
Sensor i system:
Naprawiono błędy automatycznej regulacji wzmocnienia, przywrócono rozmiar
MAIN_FBprzysnapshot()(dzięki czemucopy_to_fbw innej rozdzielczości, zmiana rozmiaru FB oraz pooling przepływu optycznego znów działają), limit czasugethostbynamew WINC, czyszczenie statusupydfuw bootloaderze H7 oraz niskoenergetyczne tryby stop/standby.
Sprzęt i obsługa płytek¶
STM32H7 — podwaliny (CMSIS / HAL / bootloader); płytka OpenMV H7 nie jest jeszcze używalna w tym wydaniu.
WINC1500 — zaktualizowane dołączone firmware.
Przełomowe zmiany API¶
Widoczne dla użytkownika zmiany przełomowe API między v2.6.0 a v2.7.0. Zakres: moduły C dla Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Każda zmiana jest oznaczona swoim wpływem:
major — dotyczy większości skryptów korzystających z danej funkcji; konieczne będzie przeniesienie kodu.
minor — wąskie API; dotyczy tylko skryptów, które z niego korzystały.
behavior — to samo API, inne wyniki; ponownie sprawdź dostrojone skrypty.
Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz po prostu przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy hash commita prowadzi do jego diffa na GitHubie.
sensor.set_auto_gain() przerobione na dB (major)¶
sensor.set_auto_gain() nie przyjmuje już całkowitego słowa kluczowego value= i nie zwraca już True / False. Użyj sensor.set_auto_gain(False, gain_db=...) (wartość zmiennoprzecinkowa w dB), odczytaj ją z powrotem nowym sensor.get_gain_db() i opakuj wywołanie w try / except, ponieważ niepowodzenie zgłasza teraz ValueError.
Commity: b906c5f19
sensor.set_auto_exposure() przerobione na mikrosekundy (major)¶
sensor.set_auto_exposure() nie przyjmuje już całkowitego słowa kluczowego value= i nie zwraca już True / False. Użyj sensor.set_auto_exposure(False, exposure_us=...), odczytaj ją z powrotem nowym sensor.get_exposure_us() i obsłuż ValueError zgłaszany przy niepowodzeniu.
Commity: 7be0a7a18
find_displacement() / rozmiary ramek FFT gruntownie przerobione (major)¶
Korelacja fazowa została gruntownie przerobiona. image.find_displacement() zwraca teraz obiekt przesunięcia (z x_translation() / y_translation() — dawniej x_offset / y_offset — oraz rotation() / scale() i nowymi słowami kluczowymi logpolar / fix_rotation_scale); osobny obiekt rot-scale został usunięty, a dodano find_rotscale(). Stałe rozmiarów ramek FFT zostały zmienione/usunięte: sensor.B40x30 zostało całkowicie usunięte, a sensor.B64x32 / B64x64 zmieniono na pisane wielkimi literami sensor.B64X32 / B64X64 (z nowymi B128X64 / B128X128).
sensor.set_auto_whitebal() przerobione na dB (minor)¶
sensor.set_auto_whitebal() zastąpiło swoje całkowite słowo kluczowe value=[r, g, b] przez rgb_gain_db=[r, g, b] (zmiennoprzecinkowe dB) i zwraca teraz None (zgłaszając ValueError przy niepowodzeniu) zamiast True / False. Aby odczytać wzmocnienia z powrotem, użyj nowego sensor.get_rgb_gain_db().
Commity: 30ecbdc4f
set_hmirror() / set_vflip() zwracają None (minor)¶
sensor.set_hmirror() i sensor.set_vflip() zwracają teraz None i zgłaszają ValueError przy niepowodzeniu, zamiast zwracać status True / False. Usuń wszelki kod rozgałęziający się na podstawie ich wartości zwracanej.
Commity: aeb023804
Narzędzia firmware WINC wymagają ścieżki do pliku (minor)¶
Narzędzia firmware network.WINC uległy zmianie: wlan.fw_dump() / wlan.fw_update() przyjmują teraz obowiązkowy argument ze ścieżką do pliku firmware, a WINC jest otwierany w trybie programowania (network.WINC(mode=...)). Zaktualizuj wywołania bez argumentów, aby przekazywały ścieżkę (np. wlan.fw_update("/winc_19_5_2.bin")).
Commity: fcc3b0b9c
image.find_number() wymaga ROI 28x28 (behavior)¶
image.find_number() (LeNet) wymaga teraz dokładnie ROI 28x28 mieszczącego się wewnątrz obrazu i w przeciwnym razie zgłasza błąd (zamiast działać na dowolnym/pełnoobrazowym ROI). Przekaż jawne roi=(x, y, 28, 28).
Commity: 4d09a13f3
Znak z_rotation() dla AprilTag odwrócony (behavior)¶
z_rotation() dla AprilTag (oraz powiązane rotation()) używa teraz prawoskrętnej konwencji układu współrzędnych, więc zwracany kąt jest zanegowany względem poprzednich wydań. Skrypty zależne od dawnego znaku muszą odwrócić wartość lub dostosować swoje obliczenia kąta.
Commity: 7673aaf74
Lista kontrolna migracji¶
Aby czysto przejść na v2.7.0, typowa praca obejmuje:
Przeniesienie
set_auto_gain()nagain_db=+get_gain_db()i obsługęValueError(przeróbka automatycznego wzmocnienia).Przeniesienie
set_auto_exposure()naexposure_us=+get_exposure_us()(przeróbka automatycznej ekspozycji).Aktualizacja
find_displacement()do obiektu przesunięcia i zmiana nazw stałych rozmiarów ramek FFT (przeróbka find_displacement).Przeniesienie
set_auto_whitebal()nargb_gain_db=+get_rgb_gain_db()(przeróbka balansu bieli) oraz zaprzestanie sprawdzania wartości zwracanej przezset_hmirror()/set_vflip()(zmiana mirror/flip).Przekazanie ścieżki do firmware narzędziom
fw_*WINC (zmiana narzędzi WINC).Przekazanie
roi28x28 dofind_number()(zmiana find_number) oraz dostosowanie obliczeń kąta AprilTag do odwróconego znakuz_rotation()(zmiana z_rotation).
Wszystkie pozostałe skrypty działają bez zmian.