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 LSDfind_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ładem rotation_correction.py.

  • sensor.sleep(enable) — wprowadza kamerę w programowy tryb uśpienia (wraz z przykładem trybu uśpienia).

  • Surowe obrazyimage.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.py dla image.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.py pod nowe API LSD (korekcja obiektywu domyślnie wyłączona); zaktualizowano API openmv po 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 w blob.density() (zawsze zwracało 0, #268), mapowanie pinów UART w OpenMV 2 (M4) oraz zaktualizowano qrcodes_with_lens_corr.py tak, 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).

Commity: 5a3153c8b, cbe2a4aeb

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:

  1. Przepisanie wywołań find_line_segments() pod parametry LSD (merge_distance / max_theta_diff) i przeniesienie tego przetwarzania poza M4 (przeróbka LSD).

  2. Zastąpienie usuniętych stałych rozmiarów ramek obsługiwaną rozdzielczością (usunięcie rozmiarów ramek).

  3. Przeniesienie wykrywania kodów QR z M4 na płytkę M7 (zmiana find_qrcodes).

  4. 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.