v4.4.3

v4.4.3 wprowadza płytkę OpenMV RT1060 (NXP i.MX RT1060), znacznie rozbudowane API nagrywania MJPEG, nowe metody obrazu ISP (automatyczny balans bieli, macierz korekcji kolorów, gamma) oraz MicroPython 1.20. Zmieniły się nazwy płytek Arduino oraz domyślne ustawienia MJPEG — przeczytaj poniższe zmiany niezgodne wstecz.

Najważniejsze zmiany

  • OpenMV RT1060 — nowa płytka NXP i.MX RT1060 (oraz rewizja REV2).

  • Rozbudowane API MJPEGwrite(), count, is_closed, sync(), słowa kluczowe ROI/palette/alpha oraz finalizator.

  • Nowe metody ISPimage.awb(), image.ccm(), image.gamma().

  • MicroPython zaktualizowany do 1.20.0.

  • Zmiana niezgodna wstecz: cele płytek Arduino zostały przemianowane, a domyślna jakość MJPEG uległa zmianie — zobacz zmiany niezgodne wstecz.

Nowe funkcje

  • OpenMV RT1060 — pełny port NXP i.MX RT1060 (sensor, sterowniki GPIO, I2C, SPI) oraz konfiguracja płytki, a także obsługa rewizji płytki RT1060 REV2 i alarmu/wybudzania machine.RTC w porcie i.MX RT.

  • MJPEG — nowa metoda Mjpeg.write() (ze słowami kluczowymi roi, rgb_channel, alpha, color_palette, alpha_palette, hint) oraz count, is_closed, sync() i finalizator __del__, a także aliasy konstruktorów MJPEG / Mjpeg / mjpeg.

  • Metody obrazu ISPimage.awb([max]) (automatyczny balans bieli), image.ccm(matrix) (macierz korekcji kolorów 3x3 / 4x3) oraz image.gamma(gamma, contrast, brightness).

  • AprilTag — nowe zmiennoprzecinkowe atrybuty centroidu cxf / cyf (cx / cy nadal zwracają zaokrąglone liczby całkowite).

  • MLtf.regression() przyjmuje teraz ndarray z ulab i obsługuje dwuwymiarowe tensory wejściowe (1D nadal obsługiwane); w dołączonych bibliotekach libtf włączono dodatkowe operacje TensorFlow Lite.

Pozostałe zmiany i ulepszenia

  • MicroPython zaktualizowany do 1.20.0; ulab zaktualizowany do 6.0.12.

  • image.gamma / gamma_corr przerobiono na metodę ISP i rozszerzono o obsługę obrazów Bayer oraz YUV (nie tylko obrazów modyfikowalnych).

  • Płytki STM32 (Portenta H7, Nicla Vision) przeszły na otwartoźródłowy sterownik WiFi cyw43.

  • Biblioteka rtsp została uczyniona przenośną (używa random/time zamiast pyb); urequests zawsze zamyka teraz swoje gniazdo.

Poprawki błędów

Kamera i sensory:

  • Naprawiono częstotliwość zegara OV767x (CLKRC) na Arduino Nano 33 BLE Sense, obsługę obejścia/preskalera CLKRC w OV7670 oraz zamienione linie danych D0/D1 na Arduino Nicla Vision / zestawie ML (port nrf).

System i USB:

  • Naprawiono obsługę krótkich pakietów USB w trybie debugowania TinyUSB (bardziej niezawodne transfery IDE/host).

  • Naprawiono polaryzację migającej diody LED w OpenMV RT1060 oraz wykrywanie karty SD przy włączeniu zasilania.

Sprzęt i obsługa płytek

  • OpenMV RT1060 — nowa płytka NXP i.MX RT1060 oraz rewizja REV2.

  • STM32 — Portenta H7 / Nicla Vision przeniesiono na otwartoźródłowy sterownik WiFi cyw43.

Zmiany API niezgodne wstecz

Widoczne dla użytkownika zmiany API niezgodne wstecz między v4.4.2 a v4.4.3. Zakres: moduły C Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.

Każda zmiana jest oznaczona swoim wpływem:

  • behavior — to samo API, inne wyniki; sprawdź ponownie dostrojone skrypty.

  • tooling — dotyczy nazewnictwa / flashowania płytek, a nie API Pythona.

Zmiany są pogrupowane według wpływu w tej kolejności. Każdy skrót commita prowadzi do jego diffa na GitHubie.

Domyślne ustawienia MJPEG i obsługa błędów (behavior)

Kod nagrywania MJPEG został gruntownie przebudowany. Domyślna jakość JPEG quality dla add_frame() / write() została podniesiona z 50 do 90 (nagrania są domyślnie większe i wyższej jakości), nieprawidłowa jakość zgłasza teraz ValueError, operowanie na zamkniętym pliku zgłasza teraz OSError, a metody nagrywania zwracają teraz obiekt Mjpeg. Skrypty, które polegały na starej domyślnej jakości lub poprzednim zachowaniu błędów, powinny zostać ponownie sprawdzone.

Commit: 3fc55ad31

Przemianowano cele płytek Arduino (tooling)

Cele płytek Arduino zostały przemianowane zgodnie ze zaktualizowaną konwencją nazewnictwa, a wszystkie manifesty płytek (zestawy zamrożonych modułów) zostały odświeżone. Nie zmienia to API Pythona, ale zmieniły się nazwy plików/płytek oprogramowania układowego używane do budowania lub flashowania płytek Arduino — odpowiednio zaktualizuj swoje narzędzia.

Commity: 77a7d16c0, 59d9f2603

Lista kontrolna migracji

Aby czysto przenieść kod do v4.4.3: sprawdź ponownie nagrania MJPEG pod kątem nowej domyślnej jakości i zachowania błędów (zmiana MJPEG) oraz zaktualizuj narzędzia do budowania/flashowania dla przemianowanych celów płytek Arduino (przemianowanie płytek). Wszystkie pozostałe skrypty działają bez zmian.