v2.6.0¶
v2.6.0 aktualizuje rdzeń do MicroPython 1.9.2, przełącza find_line_segments() na algorytm LSD, dodaje obsługę sensora z migawką globalną MT9V034, korekcję perspektywy image.rotation_corr(), sensor.sleep(), zapis surowych obrazów oraz podwaliny pod płytki OpenMV 4. Zmieniło się find_line_segments(), kilka rozmiarów ramek oraz zachowanie MicroPython — przeczytaj poniższe zmiany przełomowe.
Najważniejsze zmiany¶
Aktualizacja rdzenia do MicroPython 1.9.2.
Segmenty linii LSD —
find_line_segments()używa teraz algorytmu Line Segment Detector.Obsługa sensora z migawką globalną MT9V034.
image.rotation_corr()— korekcja perspektywicznego obrotu wokół osi X/Y/Z.sensor.sleep()— programowy tryb uśpienia oraz zapis surowych (nieskompresowanych) obrazów.Przełomowe: zmieniły się parametry
find_line_segments(), kilka stałych rozmiarów ramek oraz zachowanie MicroPython — zobacz zmiany przełomowe.
Nowe funkcje¶
image.rotation_corr()— dodano korekcję perspektywicznego obrotu wokół osi X/Y/Z wraz z przykłademrotation_correction.py.sensor.sleep(enable)— wprowadza kamerę w programowy tryb uśpienia (wraz z przykładem trybu uśpienia).Surowe obrazy —
image.save()może teraz zapisywać surowe (nieskompresowane) obrazy.MT9V034 — dodano obsługę sensora z migawką globalną, udostępniając stałą
sensor.MT9V034.Dodano przykład
lens_correction.pydlaimage.lens_corr()oraz pliki obsługi płytki OpenMV 4 (podwaliny pod konfigurację płytki / bootloader / linker).
Pozostałe zmiany i ulepszenia¶
Zaktualizowano dołączony MicroPython do 1.9.2 (warstwa portu 1.9, oofatfs); przepisano
find_line_segments.pypod nowe API LSD (korekcja obiektywu domyślnie wyłączona); zaktualizowano APIopenmvpo stronie hosta (init(portname)/exec_script/stop_script); obniżono zegar sensora OpenMV Cam M4 (niższy maksymalny FPS na M4); przycisk Stop w IDE używa teraz twardego wymuszonego wyjątku, aby pewniej przerywać skrypty.
Poprawki błędów¶
Naprawiono pozostawianie nieaktualnych pikseli przez
image.lens_corr()(bufor docelowy jest teraz czyszczony przed przemapowaniem), użycie dzielenia całkowitego wblob.density()(zawsze zwracało 0, #268), mapowanie pinów UART w OpenMV 2 (M4) oraz zaktualizowanoqrcodes_with_lens_corr.pytak, by używał QVGA.
Sprzęt i obsługa płytek¶
Sensor z migawką globalną MT9V034.
OpenMV 4 — pliki obsługi płytki (podwaliny).
OpenMV 2 (M4) — poprawka mapowania pinów UART.
Przełomowe zmiany API¶
Widoczne dla użytkownika zmiany przełomowe API między v2.5.0 a v2.6.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 korzystających z danej funkcji; konieczne będzie przeniesienie kodu.
minor — wąskie API; dotyczy tylko skryptów, które z niego korzystały.
behavior — to samo API, inne wyniki; ponownie sprawdź dostrojone skrypty.
Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz po prostu przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy hash commita prowadzi do jego diffa na GitHubie.
find_line_segments() przełączone na LSD (major)¶
image.find_line_segments() zostało przepisane tak, by używać algorytmu Line Segment Detector (LSD). Dotychczasowe parametry threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride zostały zastąpione przez merge_distance i max_theta_diff (np. find_line_segments(merge_distance=0, max_theta_diff=15)). Funkcja nie jest już również dostępna na płytkach klasy M4 (OpenMV 2).
Usunięto nieprawidłowe stałe rozmiarów ramek (minor)¶
Nieprawidłowe stałe rozmiarów ramek sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA zostały usunięte (#261). Skrypty z nich korzystające muszą przejść na obsługiwaną rozdzielczość.
Commity: 35ab0a26f
find_qrcodes() usunięte na OpenMV Cam M4 (minor)¶
image.find_qrcodes() nie jest już kompilowane na płytkach klasy M4 (OpenMV 2). Do wykrywania kodów QR na sprzęcie M4 użyj płytki OpenMV 3 (M7) lub innej funkcji kodu. Pozostałe płytki nie są tym objęte.
Commity: 7dff089e6
MicroPython zaktualizowany do 1.9.2 (behavior)¶
Dołączony rdzeń MicroPython został zaktualizowany do 1.9.2. Zachowanie biblioteki standardowej i języka odpowiada wersji MicroPython 1.9.2 z upstream — ponownie sprawdź skrypty zależne od zachowania właściwego dla danej wersji. W szczególności wycinek obrazu z krokiem innym niż 1 zgłasza teraz OSError zamiast NotImplementedError.
Commity: 11bed4b99
Lista kontrolna migracji¶
Aby czysto przejść na v2.6.0, typowa praca obejmuje:
Przepisanie wywołań
find_line_segments()pod parametry LSD (merge_distance/max_theta_diff) i przeniesienie tego przetwarzania poza M4 (przeróbka LSD).Zastąpienie usuniętych stałych rozmiarów ramek obsługiwaną rozdzielczością (usunięcie rozmiarów ramek).
Przeniesienie wykrywania kodów QR z M4 na płytkę M7 (zmiana find_qrcodes).
Ponowna walidacja zachowania właściwego dla danej wersji względem MicroPython 1.9.2 (podbicie MicroPython).
Wszystkie pozostałe skrypty działają bez zmian.