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 (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). 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 kolorufind_blobs() przyjmuje progi kolorów bezpośrednio i zwraca płaską listę krotek plam.

  • Porządkowanie imlibsubimg()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) oraz sensor.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 miejscu image.compress() oraz argument nazwany quality= 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.DAC przy starcie, aby DAC działał (#121), naprawiono niedziałające image.dilate(), uszkodzenie zerowymi bajtami w WINC client.send(), ponowne iterowanie przy scalaniu plam, błąd ponownej inicjalizacji bufora plików psujący system plików po pierwszym użyciu, obliczanie To_min / To_max termopary (#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ę.

Commity: d1ff36602, 16daeb83a

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:

  1. 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).

  2. Odczytuj dane o centroidzie / orientacji / pikselach z krotek plam zamiast z usuniętych samodzielnych metod (usunięte metody obrazu).

  3. Zmień nazwy subimgcopy, blitreplace, popraw wywołania blend() oraz zastąp scale / scaled / rainbow (zmiany nazw w imlib).

  4. Zmień nazwy find_eyes()find_eye() (zmiana nazwy find_eye) oraz compress()compressed() (zmiana nazwy compress).

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