v1.1.0

v1.1.0 to fundamentalne wydanie architektoniczne: porzuca wczesne niestandardowe moduły urządzeń peryferyjnych na rzecz standardowych wbudowanych modułów MicroPython, przenosi API obrazowania do modułu image, a zegar liczby klatek na sekundę do time, oraz dodaje wbudowane kaskady Haara, get_pixel() / set_pixel(), obsługę płytki OpenMV 2 i debugowanie przez USB-CDC. To wydanie wprowadza wiele przełomowych zmian i definiuje API — przeczytaj poniższe przełomowe zmiany.

Najważniejsze zmiany

  • Wbudowane moduły MicroPython — niestandardowe moduły gpio / led / spi / socket / wlan / uart / file / select zostały usunięte na rzecz pyb / machine z MicroPython.

  • Moduł imageImage() / HaarCascade() / deskryptory znajdują się teraz w module image.

  • time.clock — zegar liczby klatek na sekundę został przeniesiony do modułu time.

  • Wbudowane kaskady HaaraHaarCascade("frontalface") / HaarCascade("eye") (bez potrzeby pliku).

  • Obsługa płytki OpenMV 2 i debugowanie przez USB-CDC.

  • Przełomowe: struktura modułów została przedefiniowana — zobacz przełomowe zmiany.

Nowe funkcje

  • Image — dodano Image.get_pixel(x, y) / set_pixel() oraz dostęp do pikseli przez indeksowanie img[i]; wbudowane w pamięci flash kaskady Haara (HaarCascade("frontalface") / HaarCascade("eye")) oraz słowo kluczowe stages= ograniczające etapy kaskady; draw_string() działa na obrazach w skali szarości.

  • Sensor — dodano sensor.set_colorbar(), sensor.set_saturation() oraz rozdzielczość QQVGA2.

  • mlxmlx.read(type) z wyjściem mlx.RAINBOW / mlx.GRAYSCALE.

  • Debugowanie — zaimplementowano debugowanie przez USB CDC, zapytanie fw_version() o wersję oprogramowania układowego, oprogramowanie układowe dla poszczególnych płytek (OpenMV 1 / OpenMV 2) oraz skrypty autotestu / colorbar; błędy krytyczne/parsowania są zapisywane do pamięci flash.

Inne zmiany i ulepszenia

  • Brak pamięci zgłasza teraz MemoryError zamiast OSError; skrypty są uruchamiane z ponownym zgłaszaniem wyjątków, więc błędy są drukowane zamiast powodować awarię; szybkość transmisji portu szeregowego (baud) jest konfigurowalna (domyślnie 921600); większy system plików w pamięci flash; zegar pikseli sensora został obniżony do 54 MHz dla stabilności przechwytywania; sensor.reset() polega wyłącznie na programowym resecie sensora.

Poprawki błędów

  • Naprawiono dopasowywanie szablonów, powtarzanie pierwszego obiektu przez find_features(), atomowy dostęp do rejestrów SCCB/I2C, wykrywanie układu karty SD, mapowanie pinów programowego I2C, dokładność fast_cbrtf / kolorów LAB oraz zużycie pamięci obrazu całkowego / filtra medianowego na OpenMV 1 / 2.

Obsługa sprzętu i płytek

  • Obsługa płytki OpenMV 2 (STM32F427) (oraz projekt sprzętowy OpenMV 3); MCO używany jako zegar sensora na OpenMV 2.

Przełomowe zmiany w API

Widoczne dla użytkownika zmiany w API między v1.0.3-beta a v1.1.0. Zakres: moduły C Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.

Każda zmiana jest oznaczona swoim wpływem:

  • major — wpływa na większość skryptów korzystających z danej funkcji; konieczne będzie przeniesienie kodu.

  • behavior — to samo API, inne wyniki; sprawdź ponownie dostrojone skrypty.

Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz tylko przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy skrót hasha commita linkuje do jego diffa na GitHubie.

Usunięto niestandardowe moduły urządzeń peryferyjnych (major)

Wczesne niestandardowe moduły clock / file / gpio / led / select / socket / spi / wlan / uart zostały usunięte na rzecz wbudowanych urządzeń peryferyjnych pyb / machine z MicroPython. Przenieś skrypty na standardowe odpowiedniki MicroPython (np. pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commity: 6d2fafa94

API obrazowania przeniesione do modułu image (major)

Image(), HaarCascade() oraz funkcje zapisu/wczytywania deskryptorów nie są już samodzielnymi wbudowanymi elementami — znajdują się w nowym module image. Skrypty muszą wykonać import image i używać image.Image / image.HaarCascade().

Commity: 54288c535

Zegar liczby klatek na sekundę przeniesiony do time (major)

Samodzielny moduł clock został usunięty; zegar liczby klatek na sekundę znajduje się teraz w time. Użyj import time oraz clock = time.clock() — zwrócony obiekt nadal udostępnia .tick() / .fps() / .avg() / .reset().

Commity: a8928ca3b

/flash i /sd nie są już dodawane do sys.path (behavior)

Etykiety woluminów / katalog główny zostały poprawione i /flash oraz /sd nie są już automatycznie dołączane do sys.path. Skrypty, które importowały moduły pomocnicze po samej nazwie z tych lokalizacji, muszą dodać ścieżkę jawnie (lub umieścić moduły tam, gdzie są znajdowane).

Commity: 09e77b5da

Lista kontrolna migracji

Aby czysto przenieść kod do v1.1.0, typowa praca to:

  1. Zastąp niestandardowe moduły gpio / led / spi / uart / socket / wlan / file / select modułami pyb / machine z MicroPython (usunięcie niestandardowych modułów).

  2. Wykonaj import image i poprzedź Image() / HaarCascade() przedrostkiem image. (przeniesienie modułu image).

  3. Użyj import time oraz clock = time.clock() (przeniesienie zegara).

  4. Dodaj /flash / /sd do sys.path jawnie, jeśli importowałeś moduły pomocnicze po samej nazwie (zmiana sys.path).

Wszystkie pozostałe skrypty działają bez zmian.