Seite 1 von 1

Videokamera auswerten

Verfasst: Mo 16 Okt, 2017 5:54 pm
von juelin
hi zusammen,
war auf dem Laserfreaktreffen in Berlin. Mir hat besonders das Laserballspiel von dem Franzosen
gefallen. Ich würde gerne auch mal sowas programmieren.
Leider weiss ich nicht wie man die Videokamera auswertet.
Kann mir da jemand einen Tipp geben?
Danke und Gruß Jürgen

Re: Videokamera auswerten

Verfasst: Mo 16 Okt, 2017 6:16 pm
von tracky
Infrarot Strahler und Kamera, die auch diese Wellenlänge erkennt. Alte Analog Cams können das. Er hatte was von API Schnittstelle erzählt mit einem maximalen Delay von 40ms. Ansonsten schreibe ihn doch mal direkt an....Bei Beyond Cinect läuft es ähnlich

Re: Videokamera auswerten

Verfasst: Mo 16 Okt, 2017 7:18 pm
von juelin
Sven kannst Du mir da eine Adresse geben?
Gruß Jürgen

Re: Videokamera auswerten

Verfasst: Mo 16 Okt, 2017 8:54 pm
von xrayz
Also da kann ich für solche Spielereien OpenCV absolut empfehlen - zu mindest wenn es etwas professioneller werden soll.
Das ist eine Bibliotheke für die Bild VER-Arbeitung (nicht BE-Arbeitung :wink:).

https://opencv.org/

Allerdings ist es dort schnell nicht mehr mit trivialem "Ich lerne C in 60 Minuten"-Wissen getan.
Man sollte schon ein solides Verständnis für Mathematik (Matritzen, etc.), "nackte" Speicherbereiche, Pointer, Vektoren, Bildformate und Filter etc. haben, damit das Ganze nicht nur im kompletten Frust endet.

Ich habe diese Bibliotheken vor einiger Zeit mal für Algorithmen bei autonomen Roboter Systemen eingesetzt, die selbstständig durch Räume fahren, dabei Wände/Türen/Treppen/Personen erkennen etc.
Das Framework ist genau für solche Dinge ausgelegt - aber eben nur bedingt trivial.

Hier mal ein sehr einfacher Code Schnipsel um kontinuierlich von einer am PC angeschlossenen Webcam ein Image zu ziehen, einen Gauß-Weichzeichner drauf zu anzuwenden und dann eine Kantenerkennung durchzuführen...
Das Ergebnis der Kantenerkennung wird anschließend angezeigt.

C++

Code: Alles auswählen

#include "opencv2/opencv.hpp"
using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0);
    if(!cap.isOpened()) 
        return -1;
    Mat edges;
    namedWindow("edges",1);
    for(;;)
    {
        Mat frame;
        cap >> frame; // read a frame from camera
        cvtColor(frame, edges, COLOR_BGR2GRAY); //convert colors to grayscale
        GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); //apply blur to the image
        Canny(edges, edges, 0, 30, 3); //Detect edges in the frame
        imshow("edges", edges); //display the image
        if(waitKey(30) >= 0) break; //Break if the user hits a button
    }
    //camera object is automatically "cleaned-up" by the destructor
    return 0;
}
Wer es deutlich einfacher haben möchte sollte sich mal Processing und P5 anschauen. Das Ganze ist Java/Java Script basiert, absolut trivial und auch für absolute Einsteiger, Künstler, Designer, etc. gedacht die nur wenig Verständnis für die Hintergründe haben, aber dennoch etwas Programmieren können:
https://processing.org/
https://p5js.org/

Ein Webcam-Capture sähe da z.B. so aus (läuft per JS im Browser):
https://p5js.org/examples/dom-video-capture.html


//Ergänzung:
Fällt mir gerade noch so ein: Für erste Gehversucheeignet sich ein RaspberryPi 3 sehr gut.
Dort läuft openCV und auch p5 und es gibt die IR-Kamera direkt zum anstecken.

Quasi alles Plug-and-Play und kostet keine 70€ :)

https://www.raspberrypi.org/products/ra ... 3-model-b/
https://www.raspberrypi.org/products/pi-noir-camera-v2/
https://tutorials-raspberrypi.de/opencv ... tallieren/

Re: Videokamera auswerten

Verfasst: Mo 16 Okt, 2017 10:18 pm
von VDX
... bei OpenCV sind einige Beispiele dabei, um einiges an Grundfunktionalität auszuprobieren, so daß für den ersten Einstieg Basis-Programmierkenntnisse ausreichen - für die Erstellung eigener Programme braucht's dann aber doch einiges an Einarbeitung ... ist aber schaffbar ;)

Viktor

Re: Videokamera auswerten

Verfasst: Di 17 Okt, 2017 10:26 am
von xrayz
Jup. Wie gesagt einstieg geht noch relativ einfach, danach wird's aber schnell anspruchsvoller.

Habe gerade auch noch was zum Object Tracking gefunden...dürfte für diesen Fall hier wohl auch hilfreich sein.
Ist aber eben dann schon etwas anspruchsvoller, da wissen zu Filtern etc. benötigt wird.

Unten im C++ Code kann entsprechend auch statt dem MP4 Video (Zeile 45) der Cam-Stream aus dem anderen Beispiel genutzt werden.
Dann werden die Algorithmen entsprechend auf das Livebild angewandt. :)

https://www.learnopencv.com/object-trac ... pp-python/