Seite 1 von 1
Bewegungserkennung mit Webcam
Verfasst: Donnerstag 29. Oktober 2009, 17:31
von Bonzo1993
Hi @ all,
ich würde gerne mit Python (vorzugsweise 3.x aber auch 2.6) eine Bewegungserkennung basierend auf einem Webcamstream / auf Webcam-Bildern realisieren.
D.h. im Programm muss folgendes implementiert werden:
- Abgreifen des Webcamstreams
- Analyse dieses Streams um motion detection durchzuführen (z.B. Temporal Differencing, Backgroundsubstraction)
- Bewegungserkennung ausgeben (in einfacher GUI)
Hat jemand schon so etwas gemacht?
Es würde sich auf jeden Fall empfehlen OpenCV und PIL zu benutzen. Aber wie greife ich damit den Stream meiner Webcam ab und untersuche in Pixel für Pixel?
Würde mich über Hilfe echt freuen!
Verfasst: Donnerstag 29. Oktober 2009, 18:08
von SigMA
zwar noch nichts gemacht, aber rein logisch brauchst du nur 2 Bilder und machst daraus ein Diff und dann siehst du was sich verändert, sprich, sich bewegt hat
gruß, SigMA
Verfasst: Donnerstag 29. Oktober 2009, 19:02
von Leonidas
SigMA hat geschrieben:zwar noch nichts gemacht, aber rein logisch brauchst du nur 2 Bilder und machst daraus ein Diff und dann siehst du was sich verändert, sprich, sich bewegt hat
Das setzt vorraus, dass die Bilder nicht "rauschen", was ich für ziemlich unwarscheinlich halte.
Verfasst: Donnerstag 29. Oktober 2009, 19:10
von Bonzo1993
ja genau das ist das Temporal-Differencing Verfahren.
Ich hab fast genau dasselbe schonmal mit Java programmiert. Man nimmt beim TD-Verfahren die RGB-Werte der Einzelnen Pixel und vergleicht/bildet Differenz. Und dann hat man (wegen des Rauschens) eine Threshold um da eine "richtige" Bewegung rauszufiltern.
Nur ich hab eig. Probleme mit der praktischen Umsetzung. Ich weiß nicht wie eine Cam ansprechen kann und das bild zum Beispiel als Array von Pixeln analysieren kann um die Differenz rauszurechnen.
Verfasst: Donnerstag 29. Oktober 2009, 19:37
von Hyperion
Bonzo1993 hat geschrieben:
Ich weiß nicht wie eine Cam ansprechen kann...
Hm... naja, da mußte wohl oder übel gucken, welche Libs es da gibt! Letztlich mußt Du ja höchstwahrscheinlich eine Abstraktionsschicht benutzen.
Das folgende Projekt nutzt da wohl vlc als backend (auch wenn ich keinen Plan habe, wie das gehen soll):
http://kde-apps.org/content/show.php/Ka ... ent=111750
und das bild zum Beispiel als Array von Pixeln analysieren kann um die Differenz rauszurechnen.
Vielleicht hilft Dir da PIL? Also zumindest, um ein Bild in eine Python-Datenstruktur zu bekommen. Das Analysieren musste da sicherlich selber machen.
Verfasst: Freitag 30. Oktober 2009, 09:50
von SigMA
Verfasst: Donnerstag 19. November 2009, 14:37
von Bonzo1993
thx (ich benutze kein google nur Yahoo!

)
also ich hab jetzt bereits das meiste realisiert und die bewegungserkennung funktioniert auch super! (Sogar mit einer schlechten Webcam überhaupt kein Problem)
Ich bin jetzt grade an der GUI dran und hab da ein kleines Problem:
Wie bekomme ich es mit Tkinter hin, dass in der Endlosschleife zur Bewegungserkennenung jedes Frame das abgegriffen wird auch gleichzeit in der GUI ausgegeben wird? Oder kann ich direkt das Video der Webcam abgreifen? Oder mache ich das am besten mit einer Canvas in die ich schnell Bilder zeichne?
Danke schonmal für eure Antworten!
Verfasst: Dienstag 24. November 2009, 12:12
von EnTeQuAk
Hey!
Du kannst dir auch
pymt anschauen, das hat auch ein paar Funktionen zur Erkennung von Bewegungen und Gesten eingebaut.
Gruß, Christopher