Skocz do zawartości

Kamerka internetowa


Byciek94

Pomocna odpowiedź

Cześć,
Potrzebowałbym przetwarzać obraz z kamerki, jako że posiadam kamerkę internetową stwierdziłem że bez sensu kupować nowej kamery do testowania jak mogę skorzystać z tej.

I tu pytanie czy ktoś wie w jakim standardzie wysyła ona dane ??(bo jak się domyślam wszystkie działają na tej samej zasadzie). Docelowo będzie ona podpięta do jakiegoś uC. Z chęcią przygarnę wszelkie artykuły lub porady. 🙂

Link do komentarza
Share on other sites

Typowa kamerka internetowa jest urządzeniem USB klasy Audio/Video (A/V Device Class) i choćby z tego prostego powodu wymaga podłączenia do komputera mającego blok USB Host (płaskie złącze typu A). To nie jest prosty układ ani sprzętowo, ani jego obsługa programowa nie jest trywialna i dlatego producenci wstawiają go raczej do większych procesorów. O ile wiem żaden AVR nie ma czegoś takiego więc wszystkie Arduina i podobne wynalazki odpadają. Popularną platformą umiejącą zarządzać interfejsem USB jest Malina i komputery podobne jej klasą. Plus oczywiście wszystko w górę od tego, na normalnych PC-tach i konsolach skończywszy.

Jeżeli za zasadę uważasz wykrycie podłączenia wtyczki, przeprowadzenie enumeracji urządzenia USB, odczyt jego podstawowych parametrów, załadowanie i odpalenie pasujących driverów oraz wreszcie udostępnienie nowego urządzenia wirtualnego dla aplikacji to tak, raczej wszystkie kamerki internetowe działają na tej samej zasadzie.

Gdy urządzenie jest już zarejestrowane w systemie, aplikacja może dowiedzieć się za pomocą specjalnego API jakie tryby pracy, rozdzielczości itp umie dana kamerka obsłużyć i może wtedy wybrać dla siebie najwygodniejszy. To jak fizycznie obraz jest przesyłany przez kabel USB nie ma najmniejszego znaczenia - właśnie po to jest cała masa oprogramowania stojącego między Twoim programem a rzeczywistym sprzętem hosta USB. Nie napiszesz go sam więc musisz użyć komputera z gotową obsługą USB, czyli pracującego pod Linuxem, Windą lub innym systemem zapewniającym dostęność driverów urządzeń A/V Device Class.

  • Lubię! 1
Link do komentarza
Share on other sites

Obsługę USB-host mają np. STM32. Nie używałem nigdy UVC (USB Video Class), ale google mówi, że ktoś tego próbował.

Temat nie jest łatwy, ponieważ odczyt danych z kamerki to dopiero początek. Coś z tymi danymi trzeba dalej zrobić - zapisać lub od razu przetworzyć. W obu przypadkach uC będzie miał problem. Najłatwiej oczywiście wykorzystać większy układ, z systemem operacyjnym na pokładzie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

openCV na pewno nie będzie działać na uC, nawet STM32F4 nie ma tutaj szans. Natomiast np. na malinie pójdzie, ale o wiele za wolno, żeby to miało sens. OpenCV to świetna biblioteka to eksperymentów, testowania algorytmów, czy pracy naukowej. Ale jeśli potrzebujemy obliczeń w czasie rzeczywistym, to albo musimy mieć baaardzo silną maszynę, albo optymalniejsze algorytmy.

  • Lubię! 1
Link do komentarza
Share on other sites

Ok, czyli rozumiem że do testów lepiej wykorzystać komputer i tą bibliotekę.

Teraz kolejne pytanie, bo docelowo ma to być kamerka obsługiwana przez uC(najprawdopodobniej będzie to STM_F4) . Czy zna ktoś jakąś kamerkę z pełnym opisem wyjścia ?np. Posiadam kamerkę linijkową i do niej jest pełny opis jak ten sygnał idzie więc nie miałem problemu z obsłużeniem jej. Chodzi mi dokładnie o coś takiego tylko żeby kamerka nie była liniowa.

Jeżeli chodzi o cenę to miło by było żeby mieściła się do 200 zł :v

Z góry dziękuję za wszystkie odpowiedzi 🙂

Link do komentarza
Share on other sites

Oczywiście. Moduły kamer zawierające znane scalaki przetworników mają dostępną dokumentację producenta. Dość popularną rodziną jest OV7xxx f-my OmniVision. Przykładowy moduł na OV7670:

http://www.arducam.com/camera-modules/0-3mp-ov7670/

http://electropark.pl/moduly-optyczne/3174-modul-kamery-ov7670-vga640x480.html

i trochę opisu jak to pożenić z STM32:

http://embeddedprogrammer.blogspot.com/2012/07/hacking-ov7670-camera-module-sccb-cheat.html

Sam na pewno znajdziesz dane katalogowe tego (lub innego z tej rodziny - jeśli ten nie bardzo pasuje) scalaka. Zwykle w zastosowaniach komputerowego widzenia duża rozdzielczość jest przeszkodą, bo generuje mnóstwo danych które i tak na początku trzeba przeskalować i odfiltrować. Dlatego jeśli nie będziesz robić zdjęć do albumu, proponuję właśnie przetwornik CCD o rozdzielczości "tylko" VGA.

Generalnie jeżeli kamerka ma równoległe wyjście cyfrowe (8-12 bitów) oraz wypuszcza sygnały synchronizacji linii i ramki plus zegar pixeli, będzie pasowała do STM32, bo tego oczekuje jego interfejs DCMI. Żadna typowa "płytkowa" czy "kopułkowa" z telewizji przemysłowej nie nada się, bo wysyła analogowy sygnał PAL a z tym nic w procesorze nie zrobisz bez zewnętrznego dekodera cyfrowego.

Do OV7670 musisz jeszcze podpiąć I2C do sterowania rejestrami (ustawienie konfiguracji: rozdzielczość, marginesy itp) i proszę, działa 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.