v4.5.1¶
v4.5.1 dodaje wskazówki rysowania dotyczące orientacji/proporcji obrazu, ładowanie obrazów bezpośrednio ze ścieżki pliku, ioctl szerokiego pola widzenia GC2145 oraz nowe API kontrolera podświetlenia. Przebudowuje także konstruktor Image(), API display oraz parsowanie argumentów modułów — przeczytaj o zmianach łamiących zgodność poniżej.
Najważniejsze zmiany¶
Wskazówki rysowania —
draw_image()zyskał wskazówki orientacji (HMIRROR/VFLIP/TRANSPOSE,ROTATE_90/180/270) oraz skalowania proporcji (SCALE_ASPECT_KEEP/EXPAND/IGNORE).Ładowanie obrazów z dysku —
draw_image()/display.write()akceptują ciąg ze ścieżką pliku.Sterowanie podświetleniem — nowe klasy
DACBacklight/PWMBacklightoraz argumentbacklight=wyświetlacza.Zmiana łamiąca zgodność: zmieniono konstruktor
Image(), APIdisplayoraz parsowanie argumentów modułów — zobacz zmiany łamiące zgodność.
Nowe funkcje¶
Wskazówki orientacji
draw_image()—image.HMIRROR,image.VFLIP,image.TRANSPOSE, a także wygodneimage.ROTATE_90/ROTATE_180/ROTATE_270.Wskazówki proporcji
draw_image()—image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNOREdla dopasowania / rozszerzenia / rozciągnięcia.Stałe palety —
image.PALETTE_RAINBOWorazimage.PALETTE_IRONBOW(przeniesione do modułu image).Szerokie pole widzenia — nowe ioctl
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDE(na GC2145, do 5x skalowania sensora).Ładowanie z dysku —
draw_image()orazdisplay.write()akceptują ciąg ze ścieżką pliku obrazu źródłowego, ładując go bezpośrednio z pamięci masowej.Kontrolery podświetlenia — nowe klasy
DACBacklightorazPWMBacklight(importowalne zdisplay) oraz argumentbacklight=(tylko jako słowo kluczowe) w konstruktorach wyświetlaczy SPI/równoległych.
Pozostałe zmiany i ulepszenia¶
Sterownik wyświetlacza DSI ST7701 został przeniesiony do własnego modułu
st7701.py(nadal importowalny przezfrom display import *) i jest zamrożony na Arduino Giga; sterownik IMUlsm9ds1został zamrożony na Arduino Nano 33 BLE Sense.Kamery MT9V022 / MT9V034 (global-shutter) stosują teraz korekcję szumu wierszy dla lepszej jakości obrazu.
Wolumin pamięci masowej USB i.MX RT jest teraz oznaczony jako dysk OpenMV.
Poprawki błędów¶
Kamera i sensory:
Poprawiono wykrywanie narożników (
find_keypoints()FAST/AGAST) na obrazach wyższych niż 480 wierszy — bufor na wiersz jest teraz dostosowany do wysokości obrazu.Dodano obsługę pinu FSYNC dla synchronizowanego ramkami
snapshot()na i.MX RT (OpenMV RT1060) oraz poprawiono zamienione piny SPI4 MOSI/MISO na RT1060.
Wyświetlacz i wideo:
Poprawiono kolejność argumentów konstruktora
SPIDisplay(bgr,byte_swap,triple_bufferbyły przypisywane do niewłaściwych parametrów).Poprawiono uszkodzenie obrazu na nakładce TV podczas rysowania obrazu z określonym prostokątem oraz nieprawidłowe granice ramek MJPEG podczas nagrywania skalowanych ramek.
Sieć:
Tryb AP WINC WiFi nie wymusza już przestarzałego ograniczenia wyłącznie do WEP — tryby AP open i WPA działają z prawidłową obsługą PSK.
Obsługa sprzętu i płytek¶
OpenMV RT1060 — pin FSYNC i poprawione piny SPI4.
Arduino GIGA — obejście problemu z niezawodnością QSPI; wyświetlacz ST7701 zamrożony.
Arduino Nano 33 BLE Sense — sterownik IMU
lsm9ds1zamrożony.
Zmiany API łamiące zgodność¶
Widoczne dla użytkownika zmiany API łamiące zgodność między v4.5.0 a v4.5.1. Zakres: moduły C dla Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Każda zmiana jest oznaczona swoim wpływem:
minor — wąskie API; dotyczy tylko skryptów, które go używały.
behavior — to samo API, inne wyniki; sprawdź ponownie 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.
Konstruktor Image() oraz API display (minor)¶
Konstruktor image.Image został przebudowany na argumenty kluczowe (height, pixformat, buffer=, copy_to_fb=); może teraz budować obraz z istniejącego bytearray/bufora, a dla formatów skompresowanych wymagany jest bufor. display.write() został przebudowany: x_scale/y_scale przyjmują teraz wartość zmiennoprzecinkową (współczynnik skali) lub całkowitą (docelowy rozmiar w pikselach), a osobne słowa kluczowe x_size/y_size zostały usunięte. Pierwszy argument pozycyjny WINC.connect() został przemianowany z essid → ssid, a wyniki skanowania WINC WiFi zmieniły się na (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID są teraz bajtami; BSSID nie jest już sformatowanym ciągiem MAC).
Zakres podświetlenia, skalowanie i argumenty wyłącznie jako słowa kluczowe (behavior)¶
Display.backlight() przyjmuje teraz intensywność 0–100 (0 = wyłączone, 100 = pełne) zamiast 0–255, zgłaszając ValueError poza zakresem. Całkowite wartości x_scale/y_scale są teraz traktowane jako mnożnikowy współczynnik skali (tak samo jak wartości zmiennoprzecinkowe), a nie jako docelowy wymiar w pikselach — wpływa to na fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display oraz skalowanie tv. Parsowanie argumentów w modułach sensor, fir, tof, tv, mjpeg, gif, imageio, tf oraz audio zostało ujednolicone, czyniąc kilka wcześniej pozycyjnych opcji dostępnymi tylko jako słowa kluczowe (nazwy, wartości domyślne i zachowanie pozostają poza tym niezmienione).
Commity: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
Lista kontrolna migracji¶
Dla czystego przeniesienia do v4.5.1 typowa praca to:
Zaktualizuj tworzenie
Image()do nowej formy z argumentami kluczowymi, przełączdisplay.write()zx_size/y_sizeoraz przemianujessid→ssidwWINC.connect()(obsłuż nowe krotki skanowania oparte na bajtach) (zmiany konstruktora/display/WINC).Przeskaluj wywołania
Display.backlight()na 0–100, sprawdź ponownie wszelkie użycia całkowitychx_scale/y_scaleoraz przekazuj dawniej pozycyjne opcje modułów jako słowa kluczowe (zmiany zachowania).