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 Otsuhistogram.get_threshold() oraz obiekt Threshold.

  • Wątkowość — obsługa _thread w 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ów fill (prostokąt / okrąg), skalę tekstu scale / kerning, słowo kluczowe mono_space w draw_string(), image.draw_arrow() oraz image.draw_image() (rysowanie sprite’ów / masek).

  • Operacje matematyczne — dodano add(), sub(), mul(), div(), min(), max(), difference(), blend(), replace() (z hmirror / vflip / mask) oraz remove_shadows(); podstawowe operacje przyjmują teraz wartość skalarną/koloru stosowaną do wszystkich pikseli.

  • Binarne / morfologia — nowy binarny typ obrazu oraz binary(); operacje na liniach oraz erode() / dilate() przyjmują maski; dodano open() / close() / top_hat() / black_hat().

  • Filtry — dodano cartoon, flood_fill, bilateral, laplacian, aliasy blur / gaussian_blur oraz adaptacyjne wyrównywanie histogramu (histeq(adaptive=, clip_limit=, mask=)).

  • Statystykiget_statistics() / get_histogram() przyjmują listę progów koloru oraz invert; dodano progowanie Otsu histogram.get_threshold() oraz obiekt Threshold.

  • CMSIS CNN — dodano image.classify_object() wraz z przykładem cnn.py (zastąpione przez moduł nn w v3.0.0).

  • Wątkowość — włączono moduł _thread MicroPython.

  • Moduł omv — dodano informacje o wersji (version_string, arch, board_type, board_id); włączono magistralę I2C4 modułu machine oraz 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, mapowanie gain_db / gain_db_ceiling dla OV2640 / OV7725 / OV9650 / MT9V034, nadmierne wzmocnienie w sharpen(), 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łu cpufreq oraz 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.

Commity: e0e112468, fc74e70c3

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.