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