Elektroda.pl
Elektroda.pl
X
IGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

OpenMV - otwarty system widzenia maszynowego oparty o Pythona

ghost666 04 Sty 2016 14:03 9081 13
  • OpenMV - otwarty system widzenia maszynowego oparty o Pythona
    Projekt OpenMV ma na celu stworzenie niedrogiego i łatwego w obsłudze modułu wizyjnego, który dałoby się oprogramowywać w języku Python. Docelowo OpenMV ma stać się "Arduino wśród modułów wizyjnych", jak opisuje autor przedstawiający aspiracje tego projektu.

    Realizacja projektu rozpoczęła się około roku temu. Autor był bardzo rozczarowany ówczesną ofertą, jeśli chodzi o uniwersalne kamery i moduły wizyjne dla systemów automatyki przemysłowej oraz hobbystów. To zmotywowało go do stworzenia własnego układu, będącego lepszą alternatywą dla produktów obecnych na rynku.

    Kilka miesięcy później narodziła się pierwsza wersja OpenMV. Była ona w stanie realizować podstawowe algorytmu obróbki obrazów i stała się podstawą do wytworzenia bardziej wyszukanego oprogramowania. Kolejne wersje były w stanie realizować już bardziej wyszukane algorytmy, takie jak detekcja twarzy, ekstrakcja punktów kluczowych, wyszukiwanie szablonów etc. Sama kamera oprogramowana została w C. Posiada ona prosty szeregowy interfejs (SPI/I²C/PWM), ale autor chciał rozbudować trochę system, w związku z czym stworzył własne IDE, pozwalające na oprogramowywanie układu w MicroPythonie. Dzięki IDE można pisać proste skrypty w Pythonie i podglądać bufor kamery na żywo.

    Aktualnie autor pracuje nad drugą wersją OpenMV (porównanie specyfikacji sprzętowych pierwszej i drugiej wersji poniżej). Druga wersja oparta jest o szybszy procesor i posiada większej pojemności pamięć RAM.

    OpenMV - otwarty system widzenia maszynowego oparty o Pythona OpenMV - otwarty system widzenia maszynowego oparty o Pythona OpenMV - otwarty system widzenia maszynowego oparty o Pythona
    OpenMV - otwarty system widzenia maszynowego oparty o Pythona


    Podstawowe cechy układu:

    * Możliwość pisania skryptów w Pythonie3.
    * Koszt poniżej 15 USD (przy zamówieniu 1000 układów), wliczając w to koszt wykonania czterowarstwowej płytki drukowanej.
    * Zintegrowana karta microSD i/lub wewnętrzna pamięć FLASH do przechowywania skryptów oraz nagranych filmów i zdjęć.
    * Nagrywanie i strumieniowanie MJPEG - do karty microSD lub poprzez zewnętrzny moduł WiFi.
    * Wyprowadzenia dla rozszerzeń: wyjścia UART, PWM, SPI i I²C.
    * Przyjazne dla użytkownika środowisko pracy: łatwe ładowanie i uruchamianie skryptów, szablonów i podgląd przez bufor klatek.
    * 16 MB pamięci SDRAM - taka ilość pamięci obecna w OpenMV2 pozwoli na uruchomienie systemu operacyjnego uClinux na module.

    * Obróbka obrazu:
    - algorytm detekcji obiektów Viola-jones (kompatybilny z kaskadami OpenCV),
    - dopasowywanie do szablonów z wykorzystaniem znormalizowanej korelacji wzajemnej (NCC),
    - FAST/FREAK - detekcja punktów kluczowych/deskryptorów i/lub spełniających zadany opis,
    - dodatkowe operacje: RGB->LAB CLUT, klastrowanie średniej, filtr mediany, skalowanie, wycinanie fragmentów obrazu, skalowanie, blitting i alfa-blending.

    * Hardware:
    - Procesor STM32F4xx - mikrokontroler z rdzeniem ARM Cortex-M4, taktowany 168..180 MHz. Układ wyposażony jest w precyzyjne FPU, moduł DSP i co bardzo istotne dedykowany interfejs dla kamery cyfrowej - DCMI. To połączenie sprawia, że jest to idealny układ do tego rodzaju projektu.
    - Czterowarstwowa płytka drukowana (PCB). Wykorzystanie takiego laminatu pozwala na lepsze zarządzanie sygnałami, zmniejszenie emisji EMI układu oraz minimalizację wymiaru całego modułu, szczególnie w momencie, gdy obsadzone elementami są obie strony PCB.
    - Sensor obrazu: OpenMV1 współpracuje z wieloma sensorami i zespołami optyki, takimi jak: OV965x (1,3 MP), OV2640(2 MP/JPEG). Wykorzystanie w projekcie sensorów w takiej samej obudowie umożliwia proste eksperymentowanie z różnego rodzaju elementami. OpenMV2 współpracuje tylko z OV2540 z zewnętrzną optyką.
    - Oprogramowanie/firmware - firmware wgrywa się do układu poprzez interfejs SWD, wyprowadzony na kontaktach (raster 2 mm). Można wgrywać firmware także poprzez USB.
    - Moduły rozszerzające: Układ posiada wyprowadzenia w postaci pinów (raster 2,54 mm) na których znajdują się interfejsy takie jak SPI, I²C, USART czy PWM. Dostęp do nich zapewniony jest z poziomu Pythona, co umożliwia na przykład podpięcie wyświetlacza LCD do SPI i sterowanie nim poprzez Pythona.

    OpenMV - otwarty system widzenia maszynowego oparty o Pythona


    - Komunikacja bezprzewodowa: Możliwe jest dołączenie modułu komunikacji WiFi opartego o moduł CC3K od Texas Instruments do kamer OpenMV1 i OpenMV2. Kamera jest w stanie wysyłać po sieci strumień MJPEG do różnego rodzaju urządzeń, w tym np. na Androida. Moduł CC3K jest na tyle szybki (54 Mbps), że umożliwia transmisję na żywo danych z kamery:

    OpenMV - otwarty system widzenia maszynowego oparty o Pythona



    Oprogramowanie

    OpenMV wykorzystuje dużo różnego oprogramowania do pracy: ChaN's FatFS, CC3K SDK, liblioteki ARM DSP/Math itp. Dodatkowo można pisać skrypty kontrolującę pracę kamery w Pythonie. Co niezwykle istotne skrypty te mają dostęp do niskopoziomowych funkcji sprzętu, takich jak interfejsy wejścia/wyjścia (SPI, I²C, UART), karty microSD, interfejsu sieciowego i oczywiście samego modułu akwizycji i przetwarzania obrazu.

    IDE

    Autor stworzył dla OpenMV przyjazne środowisko (IDE) z wykorzystaniem Pythona, Glade i PyGTK. IDE posiada funkcję podkreślania składni i umożliwia pisanie i ładowanie do układu skryptów napisanych w Pythonie, podgląd bufora ramki (klatki) kamery, uaktualnianie firmware, a może także realizować niektóre funkcje obróbki obrazów - zapisywanie szablonów obiektów czy deskryptorów i punktów kluczowych.

    Autor planuje rozwój IDE tak, aby można było komunikować się z kamerami z wykorzystaniem gniazd (socketów) w transmisji bezprzewodowej WiFi. Dzięki temu można korzystać z OpenMV w pełni bezprzewodowo, wykorzystując sieć bezprzewodową do strumieniowania obrazów i nagrań oraz do konfiguracji kamery i ładowania do niej skryptów.

    OpenMV - otwarty system widzenia maszynowego oparty o Pythona


    Specyfikacja OpenMV1

    Procesor: STM32F407 (168 MHz)
    Funkcje CPU: FPU/DSP/DCMI
    RAM: 196 KB SRAM
    Pamięć Flash: 512 KB
    Sensor: OV965x(1.3MP)/OV2640(2MP/JPEG)
    Interfejsy wejścia/wyjścia: USART/SPI/I2C/PWM
    USB 2.0 FS
    Interfejs karty microSD: SPI
    Zużycie prądu: 120 mA
    Wymiary: 1.0" x 1.3"

    Specyfikacja OpenMV2

    Procesor: STM32F429 (180 MHz)
    Funkcje CPU: FPU/DSP/DCMI/2D Acceleration
    RAM: 256 KB SRAM/16 MB SDRAM(rozszerzalne do 64 MB SDRAM)
    Pamięć Flash: 2 MB
    Sensor: OV2640 (2 MP/JPEG)
    2 x diody podczerwone
    2 x kontrolery serwomotorów
    20 pinów wejścia/wyjścia: USART/SPI/I2C/PWM
    USB 2.0 FS
    Interfejs karty microSD: SDIO (w trybie 4 bitowym)
    Zużycie prądu: nie znane (jeszcze)
    Wymiary: 1.6" x 2.0"



    Opisywany projekt uzyskał już finansowanie poprzez kampanię crowdsourcingową na kickstarterze - https://www.kickstarter.com/projects/botthoughts/openmv-cam-embedded-machine-vision/description. Strona projektu na Kickstarerze prezentuje także szereg bardzo ciekawych dodatków do samej kamery, jakie można było zakupić w ramach kampanii (i najpewniej będzie można zakupić później):

    Ekran LCD

    Ten moduł pozwala na wyposażenie kamery w prosty ekran LCD. Ekran ma rozdzielczość 128 x 160 px i przekątną 1,8". Jest to kolorowy ekran TFT pozwalający na prezentowanie zbieranych przez kamerę obrazów w czasie rzeczywistym.

    OpenMV - otwarty system widzenia maszynowego oparty o Pythona


    Macierz termostosów

    Macierz firmy Melexis (MLX90620 lub MLX90621) złożoną z termostosów, wykorzystywaną do obrazowania w dalekiej podczerwieni. Matryca ma rozdzielczość 16 x 4 piksele i pozwala na pomiar temperatury. Moduł OpenMV pozwala na nakładanie obrazu z termostosów na obraz z kamery, dzięki czemu możliwa jest korelacja obu obrazów i detekcja źródeł ciepła.

    OpenMV - otwarty system widzenia maszynowego oparty o Pythona


    Płytka prototypowa

    Prosta płytka prototypowa, pozwalająca na dobudowanie własnych modułów do OpenMV. Sprzedawana wersja pokryta jest soldermaską i opisem, a wykonane w niej otwory są metalizowane. Płytka ta daje dostęp do wszystkich interfejsów wyprowadzonych z kamery.

    OpenMV - otwarty system widzenia maszynowego oparty o Pythona


    Źródło: Link

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9418 postów o ocenie 7077, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • IGE-XAO
  • #2
    SylwekK
    Poziom 30  
    Ciekawe rozwiązanie. Już widzę jego zastosowanie w mojej branży filmowej do automatycznego pozycjonowania kamery :)
  • IGE-XAO
  • #3
    tplewa
    Poziom 38  
    SylwekK napisał:
    Ciekawe rozwiązanie. Już widzę jego zastosowanie w mojej branży filmowej do automatycznego pozycjonowania kamery :)


    Projekt jest pomylka ;] nie na tym procku (zbyt mala wydajnosc) i na pewno nie przy rozdzielcosciach 1.3 czy 2Mpx.... Do tego jeszcze pomost do phytona ktory to wszystko zwolni...

    Moze do zabawy przy 320x200 i wykrywaniu kolorowych pileczek to sie bedzie nadawac przy marnej liczbie fps...

    Na 32MF4 to mozna sie bawic w DSP (tez z pewnymi ograniczeniami) ale nie w analize obrazu na jakims rozsadnym poziomie.
  • #4
    deus.ex.machina
    Poziom 32  
    Z ciekawości - dlaczego nie OpenCV i akceleracja przez GPU na RPi?
  • #5
    tplewa
    Poziom 38  
    deus.ex.machina napisał:
    Z ciekawości - dlaczego nie OpenCV i akceleracja przez GPU na RPi?


    Pisz to autora bo to tlumaczenie jest ;] RB Pi to tez pomylka za wolny procek, a wiele w OpenCV nie jest akcelerowane na GPU, wiele funkcji niestety uzywa procka i TBB...

    Oczywiscie pomylka mowie jesli to ma byc uzyteczne, a nie zabawka do wykrywania kolorowych pileczek czy czarnych elementow na bialej kartce. Niestety w swiecie realnym za zwyczaj sie wszystko komplikuje i nawet uzywajac OpenCV czlowiek wiekszosc ciekawych algorytmow musi sam dopisac (jak chce cos robic sensownego).

    W czyms takim bardziej by sie sprawdzil jakis szybki arm + fpga + np. adapteva... ale to sie niestety w pythonie trudno by bylo raczej ogarnac...

    W sumie bolaczki pythona to widac w wielu projektach ot chocby GNU Radio gdzie mocno niektore sprawy ogranicza...
  • #6
    deus.ex.machina
    Poziom 32  
    tplewa napisał:
    deus.ex.machina napisał:
    Z ciekawości - dlaczego nie OpenCV i akceleracja przez GPU na RPi?


    Pisz to autora bo to tlumaczenie jest ;] RB Pi to tez pomylka za wolny procek, a wiele w OpenCV nie jest akcelerowane na GPU, wiele funkcji niestety uzywa procka i TBB...

    Oczywiscie pomylka mowie jesli to ma byc uzyteczne, a nie zabawka do wykrywania kolorowych pileczek czy czarnych elementow na bialej kartce. Niestety w swiecie realnym za zwyczaj sie wszystko komplikuje i nawet uzywajac OpenCV czlowiek wiekszosc ciekawych algorytmow musi sam dopisac (jak chce cos robic sensownego).


    Pytam się bo z różnych powodów mogę w najbliższym czasie potrzebować takiej funkcjonalności i moment w którym otwarto dostęp do GPU na RPi wydaje mi się ze trudno byłoby znaleźć podobnie kosztującą platformę o tak dużej mocy obliczeniowej.
    https://github.com/hermanhermitage/videocoreiv-qpu
  • #7
    PC_Majster_Unix
    Poziom 14  
    tplewa napisał:
    SylwekK napisał:
    Ciekawe rozwiązanie. Już widzę jego zastosowanie w mojej branży filmowej do automatycznego pozycjonowania kamery :)


    Projekt jest pomylka ;] nie na tym procku (zbyt mala wydajnosc) i na pewno nie przy rozdzielcosciach 1.3 czy 2Mpx.... Do tego jeszcze pomost do phytona ktory to wszystko zwolni...

    Moze do zabawy przy 320x200 i wykrywaniu kolorowych pileczek to sie bedzie nadawac przy marnej liczbie fps...

    Na 32MF4 to mozna sie bawic w DSP (tez z pewnymi ograniczeniami) ale nie w analize obrazu na jakims rozsadnym poziomie.

    Czemu ma być to zbyt wolne?
    Na gorszym PC z 486 DX streamowałem obraz w 480p.
  • #8
    tplewa
    Poziom 38  
    Powiem ci tak wydaje sie ze to jest duza moc obliczeniowa :) mozesz sie pobawic i zobaszysz sam ile czasem tej mocy potrzeba... Obecnie siedzimy w firmie nad niby prostym projektem (niestety nie moge powiedziec co to) i i7 + mocne GPU Nvidia ma naprawde sporo pracy :)

    Zreszta to mowie zalezy co chcesz robic - bo moze sie okazac ze idzie to zrealizowac prosto jesli np. masz latwe warunki oswietleniowe itd. itp. W sumie temat bardzo rozlegly.

    Zreszta przekompiluj sobie najlepiej OpenCV pod swoja grafike (wlacz CUDA w najwyzszej wersji), dodaj do tego TBB itp. Nastepnie pobaw sie sprawami typu HOG itp. zobacz jak to faktycznie dziala i zwroc uwage na szybkosc... Fajnie to wyglada na filmikach z Youtube - gorzej jak chcesz zrobic np. sledzenie osob z kamery na ulicy :)
    Okazuje sie ze wiekszosc algorytmow musisz sam napisac bo na tych z OpenCV wiele nie zrobisz. Choc jest to fajna baza bo ma sie wiele gotowych spraw jak operacje na macierzach (kupe fajnych template) ktore mocno ulatwiaja pisanie... Czesc algorytmow mozna tez uzyc w stylu konwersje kolorow, filtry, kalman, kalibracja kamery itp.

    Dodano po 33 [minuty]:

    PC_Majster_Unix napisał:

    Czemu ma być to zbyt wolne?
    Na gorszym PC z 486 DX streamowałem obraz w 480p.


    hmmm i co to ma do tego ? Stream to jedno, a computer vision to drugie... zrob chocby kompresje do H264 w locie :) ten STM32F4 nawet dostanie zaparcia przy kodowaniu do JPG-a (mowimy o sensownym FPS). Do tego mowimy tutaj o zastosowanych kamerach, a nie 480p :)

    to juz sensowniejsze RB Pi zaproponowane przez kolege deus.ex.machina - z prostymi sprawami sobie poradzi przy ktorych STM32F4 padnie...

    Na tym STM32 to mozna zrobic jedynie mega proste sprawy, np. detekcja czegos z duzym kontrastem pojawiajace sie w stalym miejscu itp. i to nie dla zbyt wielkiej rozdzielczosci... Praktycznie jak mowimy o jakims sensownym zastosowaniu ktore dziala sprawnie to nie ma nawet mowy. Lepiej sobie kupic jakas ciekawsza plytke w stylu Parallella http://www.adapteva.com/parallella/ i na tym probowac...

    Dodano po 16 [minuty]:

    Mowiac o sensownym zastosowaniu mam na mysli choc by detekcje i sledzenie ludzi :)

    Dolaczam ciekawy dokument "HUMAN DETECTION, TRACKING AND SEGMENTATION IN SURVEILLANCE VIDEO"...

    Jakis czas temu implementowalem na GPU wlasnie opisana tam metode oparta o SuperPixele, dokument bardzo fajny mozna sporo sie dowiedziec jakie sa problemy przy tego typu sprawach itp. itd. (sa tez przyklady jaki sprzet byl uzywany i na jakich rozdzielczosciach operowano).

    W sumie troche sie bawie w takie tematy (profesjonalnie) i wiem jak to wyglada...

    Jak mowie fajne to jest jak sie popatrzy na filmiki z Youtube, a w sensownych zastosowaniach nagle pojawia sie 1 000 000 problemow ktore trzeba rozwiazac i wiekszosc to implementacja algorytmow z publikacji naukowych i wzorow (bo czesto nawet pseudokodu brak) :)
  • #9
    SylwekK
    Poziom 30  
    @tplewa, wydaje mi się, że mogło by to wystarczyć, bo śledzenie opierało by się w zasadzie tylko na kompensacji uśrednionego przesunięcia całego obiektu. Chodzi o efekt jak na filmie (ujęcia z kranu zaraz na początku i podążająca głowica za celem):


    Link


    Nie wykluczam, że zrobili ten kran na najprostszej zasadzie badania pozycji ramienia i kompensacja patrzenia głowicy względem tych zmian - to jest akurat banalnie proste tylko problemem może być uwzględnienie błędu paralaksy jeśli kamera znacznie oddali się od obiektu. Podobne działa mój sterownik tylko zamiast ruchu ramienia jest przejazd po sliderze i działa to doskonale:


    Link


    Można by to i na akcelerometrach robić chociaż w tym przypadku mogły by być większe przekłamania. No ale odbiegamy od tematu, bo w sumie to mowa o analizie obrazu :)
  • #10
    PC_Majster_Unix
    Poziom 14  
    Kiedyś były takie czasy w których dobra kompresja video w czasie rzeczywistym, która jest dla średniego smartfona pikusiem wymagała małego klastra obliczeniowego z 2 PCtów.
    Do tego swego czasu urzywało się dystrybucji Linuxa ,,Cluster Knoppix".
  • #11
    tplewa
    Poziom 38  
    PC_Majster_Unix napisał:
    Kiedyś były takie czasy w których dobra kompresja video w czasie rzeczywistym, która jest dla średniego smartfona pikusiem wymagała małego klastra obliczeniowego z 2 PCtów.
    Do tego swego czasu urzywało się dystrybucji Linuxa ,,Cluster Knoppix".


    Kiedys to bylo kiedys... co nie zmienia faktu ze STM32F4 mimo ze to swietne procki (np. do taniej zabawy z DSP itp.) to jednak do takich celow sie niezbyt nadaja. Mowimy caly czas o projekcie jaki chca zrobic, a ja troche w tym temacie siedze i po prostu czarno to widze. Modulik moze bedzie fajny, ale nic ciekawego poza funkcja edukacyjna z tego nie bedzie (do tego cholernie wolne). To juz lepiej sie pobawic w pythonie na PC z OpenCV w takich celach... mniej nerwow i mozliwosci wieksze.

    Co do Linuxa to bawie sie nim od Slackware 1.0 wydanym na dyskietce 3.5" he he zreszta obecne projekty to w 90% tez linux na pokladzie... he he wiec nie musisz mi historii opowiadac bo sam zabawe z PC zaczynalem od PC XT, potem 286 itd.

    @SylwekK

    W takich warunkach planu filmowego i przykladowo (czerwone krzeslo) ktore sie mocno wyroznia nie jest trudno... wlasnie jak sa duze kontrasty - czy jakies kolory to jest ok. Tylko problem jak cos innego ci sie na planie w takim kolorze pojawi lub padnie ci swiatlo w obiektyw itd. Chodzi generalnie o warunki jakie sa w otocznieu gdzu robimy np. sledzenie ludzi, samochodow, robota poruszajacego sie np. po miescie itd. Wiadomo wetedy scena robi sie bardzo trudna do analizy i trzeba kombinowac i to mocno (a to zjada moc obliczeniowa i to szybko).

    Zreszta mowie poszukaj jakiegos tutoriala do OpenCV (jest tego troche) i sprawdz np. jakims demem jak to bedzie smigac... fajna zabawa i jakies nowe doswiadczenia :)

    Dodano po 29 [minuty]:

    Jeszcze tak po przemysleniach moze pomysl o uzyciu kinect od M$... masz fajny i w miare tani hardware idealny do tego... do tego z co wiem ludzie na RP Pi juz sie nim bawili wiec moze nawet prawie gotowca znajdziesz...
  • #12
    SylwekK
    Poziom 30  
    @tplewa, zgadzam się w pełni, że wejście w plan czegokolwiek podobnego zakłóci śledzenie i z tego powodu wydaje mi się, że jednak robią te krany na zwykłym badaniu pozycji wysięgnika i kompensacji patrzenia głowicy jak pisałem wcześniej. Mimo wszystko gdyby okiełznać algorytm to efekty analizy obrazu mogły by być równie ciekawe... tylko, że do tego to konkretna moc jest potrzebna :)
  • #13
    tplewa
    Poziom 38  
    @SylwekK

    Wiesz choc i tak jest latwiej niz w przypadkach jakie opisalem (ulica, zatloczone dworce itp.) bo na planie masz wiele spraw kontrolowanych wiec tutaj zapewne szlo by to wszystko mocno uproscic od strony algorytmow.

    Zreszta obecnie na plycie mini ITX mozna poskladac komputerek z calkiem rozsadna grafika (a co za tym idzie GPU)... a patrzac z perspektywy i kosztow powiedzmy posiadania tekiej wielkosci kranu (jak na filmie), a na nim powiedzmy wiszacej jakiejs Red One ;) to koszta nie sa takie straszne :) Wszystko kwestia rozsadnego podejscia do tematu, czasem lepiej troche wiecej wydac na hardware niz walczyc z wiareakami czy szukac kompromisow... bo to mimo wszystko spedzone na projekt godziny (a co za tym idzie i kasa)...

    W sumie na chwile obecna mam jeszcze pare projektow do ukonczenia, ale w planie jest potestowac wlasnie plytke Parallella https://www.parallella.org/ jak bedzie sie sprawowac pod katem CV i co z tego idzie wycisnac... ...plytka lezy i czeka na wolny czas.

    Ewentualnie jak mowilem pozyczyc od kogos np. kinect-a i zobaczyc jak to sie bedzie sprawowac - mysle ze to chyba najbardziej sensowny pomysl.
  • #14
    HonestStanley
    Poziom 9  
    Witam wszystkich,

    Czy ktoś próbował kupić albo zaprojektować i zrobić obudowę dla kamery OpenMV Cam M7?
    Znalazłem na profilu OpenMV M7:
    https://twitter.com/openmvcam/status/814228337107337216
    ale nie wiem czy/gdzie można tą obudowę kupić.
    Znalazłem jeszcze ciekawy projekt:
    https://www.thingiverse.com/thing:1656029
    ale chciałbym go trochę zmodyfikować.

    Z góry dziękuje za pomoc!

    Pozdrawiam,