v2.8.0¶
v2.8.0 to ogromne wydanie. Uruchamia ono OpenMV Cam H7 (STM32H7) ze sprzętowym koderem JPEG oraz ADC/DAC H7, wprowadza wielką przebudowę API image (grubość/wypełnienia rysowania, operacje matematyczne/binarne, wiele nowych filtrów, progowanie Otsu), wątkowość MicroPython oraz moduł wersji omv. Zablokowano kolejność parsowania argumentów w Pythonie, a image.mask_ellipse() zostało usunięte — przeczytaj poniższe zmiany przełomowe.
Najważniejsze zmiany¶
OpenMV Cam H7 — nowa płytka STM32H7 ze sprzętowym koderem JPEG oraz ADC / DAC H7.
Przebudowa
image— grubość linii, wypełnienia kształtów,draw_arrow()/draw_image(), pełne operacje matematyczne/binarne oraz wiele nowych filtrów.Progowanie Otsu —
histogram.get_threshold()oraz obiektThreshold.Wątkowość — obsługa
_threadw MicroPython.Moduł
omv— informacje o wersji / płytce.Przełomowe: kolejność argumentów pozycyjnych w Pythonie jest teraz ścisła, a
image.mask_ellipse()zostało usunięte — zobacz zmiany przełomowe.
Nowe funkcje¶
OpenMV Cam H7 — obsługa płytki STM32H7 ze sprzętowym koderem JPEG, ADC H7 oraz DAC H7.
Rysowanie — dodano grubość linii
thickness, wypełnienie kształtówfill(prostokąt / okrąg), skalę tekstuscale/ kerning, słowo kluczowemono_spacewdraw_string(),image.draw_arrow()orazimage.draw_image()(rysowanie sprite’ów / masek).Operacje matematyczne — dodano
add(),sub(),mul(),div(),min(),max(),difference(),blend(),replace()(zhmirror/vflip/mask) orazremove_shadows(); podstawowe operacje przyjmują teraz wartość skalarną/koloru stosowaną do wszystkich pikseli.Binarne / morfologia — nowy binarny typ obrazu oraz
binary(); operacje na liniach orazerode()/dilate()przyjmują maski; dodanoopen()/close()/top_hat()/black_hat().Filtry — dodano
cartoon,flood_fill,bilateral,laplacian, aliasyblur/gaussian_bluroraz adaptacyjne wyrównywanie histogramu (histeq(adaptive=, clip_limit=, mask=)).Statystyki —
get_statistics()/get_histogram()przyjmują listę progów koloru orazinvert; dodano progowanie Otsuhistogram.get_threshold()oraz obiektThreshold.CMSIS CNN — dodano
image.classify_object()wraz z przykłademcnn.py(zastąpione przez modułnnw v3.0.0).Wątkowość — włączono moduł
_threadMicroPython.Moduł
omv— dodano informacje o wersji (version_string,arch,board_type,board_id); włączono magistralę I2C4 modułumachineoraz matematyczne funkcje specjalne (erf,gamma, …); dodano przykłady dla shielda silnikowego oraz wiele nowych skryptów przykładowych.
Pozostałe zmiany i ulepszenia¶
Zewnętrzny zegar sensora H7 obniżono do 48 MHz (lepsza jakość obrazu, niższy FPS); niska/wysoka jakość JPEG jest teraz konfigurowalna na poziomie płytki (i dostrojona pod H7); dodano sterowanie funkcjami per płytka przez
imlib_config.h(wszystkie funkcje obrazu pozostają włączone w fabrycznym oprogramowaniu układowym); zaktualizowano dołączony MicroPython.
Poprawki błędów¶
Obrazowanie:
Naprawiono
image.save()bez rozszerzenia pliku, mapowaniegain_db/gain_db_ceilingdla OV2640 / OV7725 / OV9650 / MT9V034, nadmierne wzmocnienie wsharpen(), szum krawędziowy morfologii, dzielenie przez zero w operacji na obrazie oraz awarię typu stack-smash przy zbyt dużym rozmiarze jądra filtra (teraz czysty błąd).
System:
Zabezpieczono bufor USB VCP sekcją atomową (uszkodzenie danych szeregowych, #313), naprawiono łączność USB w systemie Windows, montowanie wewnętrznego systemu plików flash w razie awarii karty SD, wartość PLLP w
set_frequency()modułucpufreqoraz błąd flashowania firmware w bootloaderze.
Sprzęt i obsługa płytek¶
OpenMV Cam H7 (STM32H7) — nowa płytka ze sprzętowym koderem JPEG oraz ADC / DAC H7.
machine— włączono magistralę I2C4.
Przełomowe zmiany API¶
Widoczne dla użytkownika zmiany przełomowe API między v2.7.0 a v2.8.0. Zakres: moduły C dla Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Obie zmiany przełomowe są minor i dotyczą tylko skryptów korzystających z odpowiedniej funkcji. Każdy hash commita prowadzi do jego diffa na GitHubie.
Kolejność argumentów pozycyjnych w Pythonie jest teraz ścisła (minor)¶
Parsowanie argumentów w modułach C dla Pythona (image / sensor / fir / gif / lcd / mjpeg) czyta teraz argumenty pozycyjne przed słowami kluczowymi i blokuje kolejność pozycyjną. W połączeniu z nowymi argumentami w postaci słów kluczowych w metodach rysowania (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() zyskały thickness / fill / scale / size) kod, który przekazywał parametry pozycyjnie w niewłaściwej kolejności — lub przekazywał pozycyjny color po jednym z nowych argumentów — musi używać argumentów w postaci słów kluczowych lub udokumentowanej kolejności pozycyjnej.
image.mask_ellipse() usunięte (minor)¶
image.mask_ellipse() zostało usunięte. Skrypty, które je wywoływały, muszą usunąć to wywołanie lub zamiast tego użyć jawnego ROI / obrazu maski.
Commity: d7159fba3
Lista kontrolna migracji¶
Przekazuj argumenty przez słowa kluczowe (lub w udokumentowanej kolejności pozycyjnej), zwłaszcza color w metodach rysowania (zmiana kolejności argumentów), oraz usuń wywołania image.mask_ellipse() (usunięcie mask_ellipse). Wszystkie pozostałe skrypty działają bez zmian.