v1.0.0-beta¶
v1.0.0-beta to pierwsze (beta) wydanie oprogramowania układowego OpenMV — pierwsza publiczna kompilacja kamery OpenMV Cam. Tworzy fundament, na którym opiera się wszystko od tamtej pory: środowisko skryptowe MicroPython na kamerze OpenMV Cam ze STM32F4, API kamery sensor, bibliotekę wizji maszynowej image oraz OpenMV IDE do programowania na żywo. Jako pierwsze wydanie nie ma z czego migrować — ten wpis podsumowuje, z czym zostało dostarczone początkowe oprogramowanie układowe.
Najważniejsze zmiany¶
MicroPython na kamerze OpenMV Cam — uruchamiaj skrypty Python na kamerze przez USB z interaktywnym REPL i interfejsem debugowania IDE.
Przechwytywanie obrazu z kamery — moduł
sensor: konfiguruj format pikseli / rozdzielczość / liczbę klatek na sekundę i pobieraj ramki za pomocąsnapshot().Wizja maszynowa — biblioteka
image: wykrywanie kolorowych plam (blob), rysowanie, filtry, dopasowywanie szablonów, wykrywanie twarzy metodą kaskady Haara oraz punkty kluczowe.OpenMV IDE — desktopowe IDE z podglądem bufora ramki na żywo, edytorem kodu oraz aktualizacją oprogramowania układowego z poziomu IDE.
Sprzęt — oryginalna kamera OpenMV Cam (STM32F4) z kamerami OmniVision OV9650 / OV2640, obsługą karty SD oraz nakładki WiFi.
Nowe funkcje¶
Skrypty i moduły:
Środowisko uruchomieniowe MicroPython jako podstawa oprogramowania układowego, z wykonywaniem skryptów na kamerze przez interfejs debugowania USB oraz interaktywnym REPL.
Moduł
sensor—set_pixformat()/set_framesize()/set_framerate(), sterowanie pułapem wzmocnienia / jasnością / kontrastem / wzmocnieniem,reset(),snapshot()oraz odbicie poziome / pionowe — wraz ze stałymi sensora i rozdzielczości.Moduł wizji maszynowej
image(imlib) udostępniający obiekty obrazu (z protokołem buforów Pythona) oraz warstwę przetwarzania obrazu poniżej.Moduł
time/clockdo pomiaru czasu i FPS.Wczesne moduły urządzeń peryferyjnych —
led(dioda RGB LED),spi,gpio(wejście/wyjście pinów z rejestracją przerwań zewnętrznych),uart, sprzętowyrng, licznik systick orazfile/selectdla systemu plików.Komunikacja sieciowa przez
socket/wlan(CC3000 WiFi), sterownik wyświetlaczalcd, moduł czujnika termicznegomlx90620oraz nagrywanie wideo AVI/MJPEG.
Przetwarzanie obrazu:
Ramki z kamery przechwytywane do dynamicznie alokowanego bufora ramki.
Wykrywanie kolorowych plam (blob) (flood-fill) oraz progowanie w przestrzeni kolorów LAB/XYZ (z tabelami konwersji RGB↔LAB).
Prymitywy rysowania (linia, ciąg znaków / czcionka, okrąg), filtry (erozja / dylatacja / mediana / inwersja / binarny / próg), skalowanie obrazu (dwuliniowe), wyodrębnianie podobrazu, blit oraz mieszanie alfa.
Dopasowywanie szablonów (z zapisem/wczytywaniem szablonu), wykrywanie twarzy/obiektów metodą kaskady Haara Violi-Jonesa (wczytywalne kaskady + konwerter kaskad OpenCV), kaskada LBP i detektor oczu, wykrywanie punktów kluczowych FAST / SURF / FREAK i dopasowywanie deskryptorów, obrazy całkowe oraz wykrywanie ruchu.
Kodowanie JPEG (z kontrolą jakości), zapis obrazów PPM / PGM / PNG / raw oraz kodowanie wideo AVI/MJPEG.
IDE i narzędzia:
Aplikacja desktopowa OpenMV IDE — podgląd bufora ramki na żywo z FPS, edytor kodu (otwórz / nowy / zapisz / zapisz jako, ostatnie pliki, dołączone menu Examples), połącz / resetuj / automatyczne łączenie oraz wczytywanie/zapis konfiguracji.
Aktualizacja oprogramowania układowego z poziomu IDE przez DFU, czysto pythonowe narzędzie
pydfuoraz polecenie USB wymuszające wejście do bootloadera; biblioteka/protokół hostaopenmv.py; samodzielny podgląd bufora ramki i narzędzie kaskad; oraz reguły udev dla Linuksa.
Inne zmiany i ulepszenia¶
Dołączone przykładowe skrypty: wykrywanie plam (blob), wykrywanie / śledzenie twarzy, SURF / punkty kluczowe, dopasowywanie szablonów, LCD, podgląd bufora ramki, blit, streamer MJPEG, nagrywanie AVI, serwer echo, FPS oraz dema zapisu JPEG / obrazu.
Obsługa sprzętu i płytek¶
OpenMV Cam — STM32F4xx (STM32F407 / F429) w różnych wczesnych rewizjach sprzętu, z CMSIS + peryferyjnym / Cube HAL STM32 oraz CMSIS-DSP.
Kamery — OmniVision OV9650 i OV2640 (SCCB/I2C, sterowanie regulatorem) przez sensor HAL, plus termiczny czujnik IR MLX90620; rozdzielczości od QQCIF/QCIF aż do SVGA/UXGA przy maksymalnie 30 FPS.
Pamięć masowa / łączność — karta SD (SPI i SDIO) z FatFS, wewnętrzny system plików w pamięci flash, SDRAM (bufor ramki w SDRAM), USB OTG FS (debug + DFU), CC3000 WiFi (nakładki WiFi / BLE), dioda IR LED oraz programowy/sprzętowy I2C i SPI sterowany przez DMA.
Przełomowe zmiany w API¶
Brak. v1.0.0-beta to pierwsze (beta) wydanie oprogramowania układowego OpenMV — nie ma wcześniejszego wydania, z którym można by złamać zgodność. Kolejne wydania dokumentują swoje przełomowe zmiany względem poprzednika; zobacz pozostałą część historii zmian.