logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Strzelnica elektroniczna na bazie kamery internetowej?

brabus87 08 Maj 2013 17:12 3795 14
REKLAMA
  • #1 12285266
    brabus87
    Poziom 10  
    Posty: 13
    Witam, na początku przepraszam, jeśli to nie ten dział, problem to:

    Chciałbym zrobić sobie strzelnicę elektroniczną i na początku chciałem ją zrobić na fotorezystorach ale okazało się to zbyt drogie, więc wpadłem na pomysł, Który chyba się nazywa "mapowaniem obrazu". Problem polega na tym, że jest pomysł ale nie wiem jak go zrealizować. Chciałbym podłączyć kamerę internetową do komputera, kamera monitorowałaby jakiś obszar na który padałaby skupiona wiązka światła z "pistoletu" (mam niepotrzebną metrówkę z poziomicą laserową), następnie chciałbym, żeby komputer po odebraniu sygnału od kamery o zmianie obrazu zrobił screenshot'a na którym byłby zaznaczony punkt w którym podła wiązka światła z obrazem tarczy strzeleckiej.
    Nie wiem jak zrobić:
    - mapowanie kawałka ściany, na którym wisiałaby jakaś tarcza
    - dodatkowo jeśli to możliwe chciałbym zrobić jakąś statystykę strzału na podstawie zebranych wyników
    - jak zebrać wyniki bez konieczności nagrywania filmu.
    Reszta pewnie wyjdzie w praniu
    Z góry dzięki za pomoc
  • REKLAMA
  • #2 12285490
    kasjo
    Poziom 26  
    Posty: 769
    Pomógł: 94
    Ocena: 88
    Nie wiem jak stoisz z programowaniem ale za pomocą biblioteki OpenCV możesz w miarę prosty sposób takie coś wykonać..
  • REKLAMA
  • #3 12287479
    _jta_
    Specjalista elektronik
    Posty: 48846
    Pomógł: 3198
    Ocena: 4190
    Linux, na poziomie systemu jest V4L2, zobacz:
    http://v4l2spec.bytesex.org/spec/r13317.htm
    http://v4l2spec.bytesex.org/spec/r8936.htm
    - ja do swoich celów używałem akurat tego.

    Ale są pakiety z bibliotekami na wyższym poziomie,
    np. Linux Ubuntu ma pakiet libv4l-dev do języka C,
    libv4l-ruby1.8 do Ruby, libvideo-capture-v4l-perl do
    "łapania" obrazów do programu w Perl-u...

    Jest sporo ustawiania parametrów: wybór kamerki
    (jeśli jest kilka), rozdzielczości obrazu, częstotliwości
    ramek, formatu danych i parędziesiąt innych (jasność,
    kontrast, nasycenie barw, korekcja koloru, itp.).

    Sam sterownik daje obraz w różnych formatach
    (zależnie od tego, co przesyła kamerka), biblioteki
    zawierają procedury do konwersji na coś prostego
    - pewnie do tego celu dobrze mieć piksele RGB.

    Są również pod Linux-em programy do przetwarzania
    obrazu, które potrafią odbierać obraz z kamerki
    i przetwarzać go na zadany format, np. "raw" (same
    dane RGB), wywoływane z linii polecenia, np. ffmpeg.

    Aha, Linux Ubuntu da się zainstalować pod Windows,
    nie trzeba odrębnej partycji - zapisuje obraz dysku
    jako plik i jakieś pliki do startowania - przy bootowaniu
    systemu jest w menu wybór Windows albo Ubuntu.
  • #4 12295465
    brabus87
    Poziom 10  
    Posty: 13
    Może ktoś zna jakieś łatwiejsze rozwiązanie, które nie wymaga znajomości Linux'a?
  • REKLAMA
  • #6 12296754
    brabus87
    Poziom 10  
    Posty: 13
    Ja znam się tylko na językach typu html itp, programowanie jest mi obce :( miałem jakieś podstawy C++, Visual Basic'a i chyba to wszystko, wątpię żeby to było pomocne :( Myślałem, że da się to zrobić na zasadzie:
    -Instaluję program obsługujący kamerkę
    -Piszę program bądź włączam jakąś funkcję która ma robić screen shot'y dla warunku, którym jest zmiana na obrazie.
    -Kolejny program bądź jakaś funkcja przechwytuje obraz i narzuca go na wcześniej przygotowany obraz z widokiem tarczki "strzeleckiej"
    -Tu pojawia się chyba tylko i wyłącznie napisany program, który na podstawie wcześniej mapowanego obrazu wychwytuje położenie punktu i wartość dla danego położenia tego punktu.
    -Kolejny program oblicza średnią wyników (to najprostsze bo to w C się bankowo da zrobić).

    Pisząc "kolejny program" mam na myśli kolejną funkcję danej aplikacji bo chodzi o to, żeby całość działa bez konieczności uruchamiania niewiadomo czego, i na koniec, żeby wyrzuciła wynik.

    Mam nadzieję, że to jest wykonalne :?
  • REKLAMA
  • #8 12297458
    brabus87
    Poziom 10  
    Posty: 13
    Jak to powinno działać krok po kroku to ja raczej wiem, problem polega na samej realizacji bo tego nie potrafię rozgryźć :(
  • #9 12301664
    _jta_
    Specjalista elektronik
    Posty: 48846
    Pomógł: 3198
    Ocena: 4190
    Poszukaj źródeł jakiegoś programu odczytującego obraz z kamerki, np. XawTV i zobacz, jak to zrobiono.
    Zajrzyj jeszcze do tematu na forum: Przechwytywanie obrazu z kamery przemysłowej / internetowej.
    Oraz na stronę: http://kju.wemif.net/webcam - to jest opis jakiegoś programu pod Windows.
    Nie wiem tylko, jakie oprogramowanie (kompilator, biblioteki) pod Windows są darmowe - być może
    trzeba za nie sporo zapłacić; pod Linux-em na pewno da się zrobić używając darmowych programów.

    Jeszcze parę linków dotyczących XawTV: Wikipedia, strona oficjalna, opis, pobieranie.
  • #10 12321394
    brabus87
    Poziom 10  
    Posty: 13
    Temat stoi i chyba nie jestem w stanie tego ogarnąć :(
  • #11 12321680
    _jta_
    Specjalista elektronik
    Posty: 48846
    Pomógł: 3198
    Ocena: 4190
    Jeśli nie określisz, czym dysponujesz (np. masz kompilator, biblioteki), to temat pewnie nie ruszy...

    O ile pamiętam, oprogramowanie pod Windows na ogół było płatne, ale może jest i coś za darmo - chyba np. GNU C jest również dla Windows, nie sprawdzałem, bo to jest tyle roboty z szukaniem, że mi się nie chciało - pod Linux-em mam wszystko, czego potrzebuję, w ramach dystrybucji systemu, i jest to za darmo.
  • #12 12369416
    brabus87
    Poziom 10  
    Posty: 13
    Bloodshed Dev-C++ ja używałem tego programu i on jest darmowy, jeśli da radę to wykorzystać to będę wdzięczny za kolejny etap pomocy.

    Features are :

    - Support GCC-based compilers
    - Integrated debugging (using GDB)
    - Project Manager
    - Customizable syntax highlighting editor
    - Class Browser
    - Code Completion
    - Function listing
    - Profiling support
    - Quickly create Windows, console, static libraries and DLLs
    - Support of templates for creating your own project types
    - Makefile creation
    - Edit and compile Resource files
    - Tool Manager
    - Print support
    - Find and replace facilities
    - CVS support

    Source code : Delphi 6 Source code of Dev-C++ is available for free under the GNU General Public License (GPL)
  • #13 12376718
    _jta_
    Specjalista elektronik
    Posty: 48846
    Pomógł: 3198
    Ocena: 4190
    A co to jest Bloodshed Dev-C++? Może podałbyś jakiś link do dokładniejszej informacji? Potrzebny jest przede wszystkim kompilator (i tu jest choćby GCC - darmowy), oraz biblioteka do łączności z kamerą internetową. Pożądana byłaby również biblioteka pozwalająca nanieść coś na obraz i pokazać go na ekranie - będzie pożyteczna choćby przy uruchamianiu programu (można do tego użyć np. Tcl - do Windows jest ActiveStateTcl - ale jeszcze nie próbowałem tworzyć DLL-i przy użyciu GCC, a do łączenia Tcl z C++ pod Windows jest to potrzebne).
  • #14 12873302
    brabus87
    Poziom 10  
    Posty: 13
    Temat umarł :( może ktoś zna się na Visual Basic i potrafi to napisać i wytłumaczyć mniej więcej dlaczego tak a nie inaczej?
  • #15 12873488
    _jta_
    Specjalista elektronik
    Posty: 48846
    Pomógł: 3198
    Ocena: 4190
    Ja teraz już umiem robić DLL-e i łączyć je z Tcl, ale nie wiem, jakie pod Windows są biblioteki do kamer internetowych i podejrzewam, że każdy producent tych kamer może mieć własne i to niejedne - może i do każdego modelu kamery inną. Pewnie trzeba zapytać producenta o SDK do tej kamery. Albo poszukać w sieci programów, które są dostępne w postaci źródłowej, a potrafią współpracować ze wszystkimi kamerami, o ile takie się znajdą (prawie ze wszyskimi kamerami działa Skype, ale źródeł do niego nie dostaniesz). Niestety chcąc coś zrobić pod Windows pakujesz się w tego typu problemy. Możesz jeszcze poszukać w MSDN, albo MSDN Blogs, może ktoś tam opisał, jak to się robi.

Podsumowanie tematu

✨ Użytkownik planuje stworzyć elektroniczną strzelnicę opartą na kamerze internetowej, wykorzystując technikę mapowania obrazu. Chce podłączyć kamerę do komputera, aby monitorować obszar, na który pada wiązka światła z lasera. Główne wyzwania to: mapowanie obrazu tarczy, zbieranie wyników strzałów bez nagrywania filmu oraz generowanie statystyk. Uczestnicy dyskusji sugerują użycie biblioteki OpenCV do przetwarzania obrazu oraz różnych narzędzi i bibliotek dostępnych w systemach Linux i Windows, takich jak V4L2, libv4l-dev, oraz Bloodshed Dev-C++. Wskazują również na potrzebę posiadania odpowiednich kompilatorów i bibliotek do obsługi kamer internetowych.
Wygenerowane przez model językowy.
REKLAMA