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ł sensorset_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 / clock do 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ętowy rng, licznik systick oraz file / select dla systemu plików.

  • Komunikacja sieciowa przez socket / wlan (CC3000 WiFi), sterownik wyświetlacza lcd, moduł czujnika termicznego mlx90620 oraz 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 pydfu oraz polecenie USB wymuszające wejście do bootloadera; biblioteka/protokół hosta openmv.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.