v1.4.0¶
v1.4.0 to fundamentalna reorganizacja imlib. find_blobs() / find_markers() zostały przepisane pod bezpośrednie śledzenie progów kolorów, wiele samodzielnych metod obrazu zostało zawartych w krotkach plam, a kilka metod obrazu przemianowano (subimg → copy, blit → replace, find_eyes → find_eye, compress → compressed). Dodaje też sensor.get_fb() / przełączniki AGC / AEC oraz ~60 przykładowych skryptów. To wydanie mocno powodujące niezgodność — przeczytaj poniższe zmiany powodujące niezgodność.
Najważniejsze zmiany¶
Śledzenie plam na podstawie koloru —
find_blobs()przyjmuje progi kolorów bezpośrednio i zwraca płaską listę krotek plam.Porządkowanie imlib —
subimg()→copy(),blit()→replace(),find_eyes()→find_eye(),compress()→compressed().Sensor — dodano
sensor.get_fb()oraz przełączniki włączania AGC/AEC.Dodano/rozszerzono ~60 przykładowych skryptów.
Niezgodność: API plam, usunięte metody obrazu oraz kilka zmian nazw — zobacz zmiany powodujące niezgodność.
Nowe funkcje¶
Sensor — dodano
sensor.get_fb()(pobranie bufora ramki ostatniego zrzutu obrazu),sensor.set_gain_ctrl(enable)(przełączanie AGC) orazsensor.set_exposure_ctrl(enable)(przełączanie AEC).Image — indeksowanie obrazu (
img[i]) obsługuje teraz zarówno odczyt, jak i zapis pikseli (skala szarości / RGB565 / JPEG); dodano działające w miejscuimage.compress()oraz argument nazwanyquality=w funkcjach JPEG;find_blobs()/find_markers()/find_features()zwracają teraz pustą (iterowalną) listę zamiast wartości niebędącej listą, gdy nic nie zostanie znalezione.Dodano ~60 przykładowych skryptów (sterowanie płytką, filtry obrazu, śledzenie koloru, wykrywanie twarzy / oczu / cech, nakładka WiFi) oraz drugi przykład wykrywania tęczówki.
Pozostałe zmiany i ulepszenia¶
image.histeq()działa teraz na obrazach RGB565, a nie tylko w skali szarości.
Poprawki błędów¶
Zainicjalizowano
pyb.DACprzy starcie, aby DAC działał (#121), naprawiono niedziałająceimage.dilate(), uszkodzenie zerowymi bajtami w WINCclient.send(), ponowne iterowanie przy scalaniu plam, błąd ponownej inicjalizacji bufora plików psujący system plików po pierwszym użyciu, obliczanieTo_min/To_maxtermopary (#113) oraz zastosowano łatkę HAL I2C/DMA z głównego MicroPython.
Sprzęt i obsługa płytek¶
Nakładka WiFi — WINC1500 zaktualizowano do plików płytki Rev-B.
pyb.DAC— włączono urządzenie peryferyjne DAC.
Zmiany API powodujące niezgodność¶
Widoczne dla użytkownika niezgodności API między v1.3.0 a v1.4.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, które używały danej funkcji; konieczne będzie przeniesienie kodu.
minor — wąskie API; dotyczy tylko skryptów, które z niego korzystały.
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 commita prowadzi do jego diffa na GitHubie.
find_blobs() / find_markers() przepisane (major)¶
image.find_blobs() / find_markers() zostały przepisane pod śledzenie na podstawie koloru: teraz przekazujesz progi kolorów (i opcjonalną funkcję filtrującą) bezpośrednio, zamiast działać na wstępnie zsegmentowanym obrazie, a wynikiem jest pojedyncza płaska lista 10-elementowych krotek plam (z polem kodu koloru) zamiast zagnieżdżonego drzewa według kolorów. Przerób skrypty śledzenia koloru tak, aby przekazywały progi kolorów i iterowały płaską listę.
Usunięto samodzielne metody obrazu (major)¶
Usunięto image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() oraz image.pixels(). Dane o centroidzie / orientacji / liczbie pikseli są teraz dostępne jako pola krotek plam zwracanych przez find_blobs().
Commity: 9e5d379c1
Zmiany nazw metod imlib (major)¶
Kilka metod obrazu przemianowano/przerobiono: image.subimg() → image.copy(), image.blit() → image.replace(), a image.blend() zmieniono, aby dopasować go do pozostałych operacji na dwóch obrazach. Metody image.scale() / scaled() / rainbow() usunięto (rainbow przeniesiono do modułu FIR). Zaktualizuj wywołania do nowych nazw.
Commity: b534dc6ff
find_eyes() przemianowano na find_eye() (minor)¶
image.find_eyes() przemianowano na image.find_eye() i zwraca teraz 2-elementową krotkę tęczówki (x, y) zamiast poprzedniej krotki oczu. Zmień nazwę wywołania i zaktualizuj obsługę zwracanej wartości.
Commity: 7a01a9bed
image.compress() przemianowano na compressed() (minor)¶
image.compress() (które zwracało nowy obraz JPEG) przemianowano na image.compressed(); nowe image.compress() zamiast tego kompresuje obraz w miejscu i zwraca None. image.save() zyskało także argument nazwany quality= i zwraca teraz None zamiast True. Przenieś img.compress(q) (oczekujące zwróconego obrazu) na img.compressed(quality=q).
Commity: 367e5fdd3
Lista kontrolna migracji¶
Dla czystego przeniesienia na v1.4.0 typowa praca to:
Przerób kod śledzenia koloru tak, aby przekazywał progi kolorów do
find_blobs()/find_markers()i iterował płaską listę krotek plam (przepisanie find_blobs).Odczytuj dane o centroidzie / orientacji / pikselach z krotek plam zamiast z usuniętych samodzielnych metod (usunięte metody obrazu).
Zmień nazwy
subimg→copy,blit→replace, popraw wywołaniablend()oraz zastąpscale/scaled/rainbow(zmiany nazw w imlib).Zmień nazwy
find_eyes()→find_eye()(zmiana nazwy find_eye) orazcompress()→compressed()(zmiana nazwy compress).
Wszystkie pozostałe skrypty działają bez zmian.