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/selectzostały usunięte na rzeczpyb/machinez MicroPython.Moduł
image—Image()/HaarCascade()/ deskryptory znajdują się teraz w moduleimage.time.clock— zegar liczby klatek na sekundę został przeniesiony do modułutime.Wbudowane kaskady Haara —
HaarCascade("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 indeksowanieimg[i]; wbudowane w pamięci flash kaskady Haara (HaarCascade("frontalface")/HaarCascade("eye")) oraz słowo kluczowestages=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.mlx—mlx.read(type)z wyjściemmlx.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
MemoryErrorzamiastOSError; 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:
Zastąp niestandardowe moduły
gpio/led/spi/uart/socket/wlan/file/selectmodułamipyb/machinez MicroPython (usunięcie niestandardowych modułów).Wykonaj
import imagei poprzedźImage()/HaarCascade()przedrostkiemimage.(przeniesienie modułu image).Użyj
import timeorazclock = time.clock()(przeniesienie zegara).Dodaj
/flash//sddosys.pathjawnie, jeśli importowałeś moduły pomocnicze po samej nazwie (zmiana sys.path).
Wszystkie pozostałe skrypty działają bez zmian.