v4.5.3¶
v4.5.3 to duże wydanie: autofokus OV5640, rysowanie linii z antyaliasingiem, zintegrowany z głównym drzewem sprzętowy dekoder JPEG, znaczne rozszerzenie możliwości i.MX RT (RT1060) oraz szeroki zestaw poprawek kamery/ISP. Kilka rzadko używanych metod obrazu zostało usuniętych, a niektóre API ISP/wyświetlacza uległy zmianie — zapoznaj się z przełomowymi zmianami poniżej.
Najważniejsze zmiany¶
Autofokus OV5640 — włączony na OpenMV 4 / 4 Plus / RT1060 (
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), wraz z przykładem.Rysowanie
draw_line()z antyaliasingiem oraz zintegrowany z głównym drzewem sprzętowy dekoder JPEG STM32 (szybsza dekompresja JPEG).OpenMV RT1060 zyskał ulab, operacje ISP,
set_framerate()/set_frame_callback(), znacznie większy bufor ramki oraz sterownik CAN.Zmiana przełomowa: metody
Image.div()/cartoon()/mul()zostały usunięte, a niektóre API ISP/wyświetlacza uległy zmianie — zobacz przełomowe zmiany.
Nowe funkcje¶
Autofokus OV5640 — oprogramowanie układowe autofokusa jest włączone na OPENMV4, OPENMV4P oraz OPENMV RT1060; wyzwól je za pomocą
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Dodano nowy przykład07-Sensor-Control/autofocus.py.Rysowanie linii z antyaliasingiem —
draw_line()zyskało antyaliasing.Niestandardowe kontrolery wyświetlaczy SPI —
SPIDisplayprzyjmuje teraz słowo kluczowecontroller=i udostępnia hakbus_writedo niestandardowych sekwencji inicjalizacji/poleceń.Ulepszenie
Image.ccm()— przyjmuje teraz zagnieżdżone macierze 3x3 / 4x3 / 3x4 / 4x4 oraz tablice ulab (z opcjonalnym wierszem przesunięcia dla każdego kanału); dodano przykład korekcji kolorów.Przechwytywanie JPEG na i.MX RT — przechwytywanie
sensor.JPEGna Arduino Portenta/Nicla Vision/Giga, a takżeset_framerate()iset_frame_callback()na porcie mimxrt.Walidacja modeli TFLite — modele zawierają teraz skrót porządku operatorów oraz rozmiar zbioru operatorów.
WiFi — dodano stałe trybów zabezpieczeń CYW43; nowe przykładowe skrypty sterowania płytą i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).
Inne zmiany i ulepszenia¶
MicroPython zaktualizowany do 1.22; CMSIS zaktualizowany do 5.9.0.
Zintegrowany z głównym drzewem sprzętowy dekoder JPEG STM32 — szybsza dekompresja JPEG na wbudowanym kodeku.
Zoptymalizowano
Image.invert()/negate()oraz binarne/matematyczne operacje na obrazach (intrinsics CMSIS).Biblioteki
rpcivl53l1xzostały uprzenośnione (używająmachine/timezamiastpyb), dzięki czemu działają na portach innych niż STM32.Przyspieszany przez DMA memcpy bufora ramki na OpenMV H7 / H7 Plus / Pro / Pure Thermal oraz Arduino Giga / Nicla Vision / Portenta H7; STM32 skanuje teraz urządzenia I2C raz na skanowanie, co przyspiesza rozruch.
Poprawki błędów¶
Kamera i sensory:
Naprawiono XCLK kamery STM32, zapewniając prawdziwy 50% cykl pracy, oraz błąd występujący przy ustawieniu częstotliwości zegara kamery na zero; naprawiono kadrowanie+transpozycję Bayer, przesunięcie kolorów YUV422 oraz
set_windowing()na porcie mimxrt.Naprawiono sondowanie identyfikatora układu GC2145 oraz hmirror/vflip na obróconych montażach; naprawiono PAJ6100 na RT1062 oraz przepełnienie bufora SPI PixArt PAJ7620/PAW3902.
Przetwarzanie obrazu:
Naprawiono przycinanie roi w
find_rects(), obcinanie ułamkowego przesunięcia wmorph(), domyślne wartości kontrastu/jasności wimage.gamma(), przesunięcia A/B wget_threshold()na RGB565 oraz dekodowanie JPEG wymiarów niebędących wielokrotnością 8.
System i biblioteki:
machine.LED.value()bez argumentu zwraca teraz stan diody LED zamiast go czyścić; naprawiono deinicjalizację SPI SSEL na współdzielonej magistrali,machine.deepsleep()na RT1062, awarię TF przy brakujących operatorach oraz automatyczną aktywację karty sieciowej WINC1500/ninaw10 przyconnect().
Obsługa sprzętu i płyt¶
OpenMV RT1060 — włączono ulab i operacje ISP, większy bufor ramki (10M→20M) / fb_alloc (2M→11M), przywrócono sterownik CAN, więcej sterty.
Arduino GIGA — obsługa kamery GC2145, z automatycznym wykrywaniem GC2145/OV5640 (współdzielą adres I2C).
i.MX RT — obsługa przechwytywania
sensor.JPEG.
Przełomowe zmiany w API¶
Widoczne dla użytkownika zmiany przełomowe w API między v4.5.2 a v4.5.3. Zakres: moduły C 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; 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 skrót commita prowadzi do jego diffa na GitHubie.
Usunięte metody obrazu (minor)¶
Metody Image.div(), Image.cartoon() (oraz jej przykład) i Image.mul() zostały usunięte.
API modułu wyświetlacza (minor)¶
Usunięto starszy zamiennik nazwy modułu udisplay — moduł jest rejestrowany wyłącznie jako display. Metody dsi_write() / dsi_read() dostępne tylko dla DSI zostały zastąpione przez bus_write() / bus_read(), które są teraz dostępne na wszystkich kontrolerach wyświetlaczy.
Zmiany API MQTT i tf.regression (minor)¶
Klasa MQTTClient biblioteki mqtt została przebudowana: port jest teraz wymagany, dodano nowe słowa kluczowe konstruktora ssl_params / callback oraz argument timeout w connect(), usunięto stare domyślne wartości ssl= / port=0, a check_msg() jest teraz nieblokujące. tf.regression() zostało przepisane — jego sygnatura to teraz regression(model, array) i obsługuje modele 1D/2D/3D oraz skwantyzowane (int8).
Zmiany zachowania ISP / sensora (behavior)¶
Image.awb() zostało przebudowane — tryb gray-world (domyślny) kontra white-patch (max=True) jest teraz jawny, a argument max oraz argumenty gamma / contrast / brightness metody Image.gamma() są teraz wyłącznie słowami kluczowymi (wywołania pozycyjne muszą zostać zaktualizowane). Transpozycja obrazu jest teraz wyłączona dla YUV422 (wcześniej dawała nieprawidłowy wynik), a przesunięcie kolorów YUV422 zostało skorygowane tak, by odpowiadało Bayer. Ścieżka JPEG STM32 zgłasza teraz błąd przy niezgodności geometrii JPEG zamiast tworzyć uszkodzony obraz, a tryb AP WiFi stosuje teraz domyślny tryb zabezpieczeń na portach STM32 oraz i.MX RT.
Commity: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af
Lista kontrolna migracji¶
Dla czystego przeniesienia do v4.5.3 typowa praca to:
Zaprzestań używania
Image.div()/cartoon()/mul()(usunięte metody).Importuj moduł wyświetlacza jako
displayi przełączdsi_write/dsi_readnabus_write/bus_read(zmiana API wyświetlacza).Zaktualizuj konstruowanie
MQTTClient(portjest wymagany;ssl_params/callback) oraz wszelkie wywołaniatf.regression()(zmiany API bibliotek).Przekazuj argumenty
maxwawb()orazgamma/contrast/brightnesswgamma()jako argumenty słów kluczowych i ponownie sprawdź założenia dotyczące YUV422/transpozycji oraz zabezpieczeń trybu AP (zmiany ISP/sensora).