Archiv verlassen und diese Seite im Standarddesign anzeigen : Kamera soll Person folgen
rippchen12
17.11.2004, 21:31
Hallo,
ich suche nach einer Möglichkeit meine Webcam (Grundstücksüberwachung) automatisch nach Erfassung einer Person (egal welche) dieser zu folgen.
Sprich nach der Erfassung einer Person möchte ich gerne 2 Achsen so steuern das die Person immer im Bild ist.
Hat jemand eine Lösung?
Gruß
Roland =D>
Also, am Besten wäre es, einem PC mit der richtigen Software (Bilderkennung) zu nehmen und dann über den LPT-Port 2 Servos/Schrittmotoren anzusteuern. So hättest du mit dem minimalen Ressourcen (außer halt der "verlorenen" Rechenleistung des PCs) und könntest dann die Person (oder was auch immer) im Fokus haben...
MfG
Mobius
OK,
aber welche Software wertet die Daten schnell genug aus und gibt mir eine passende Schnittstelle (API)
Gruß
Roland
Also... :-k Auf anhieb fällt mir nur ein, dass du durch den DirectX die Webcam direkt ansprichst (geht bei 75% aller Webcam-Treibern) und dann die so erhaltenen Bilder "mauell" in deinem Programm auswertest.
Links, die vielleicht weiterhelfen:
hier (www.codeproject.com (http://www.codeproject.com/cs/media/directxcapture.asp))
und hier (wieder codeproject :D) (http://www.codeproject.com/directx/LiveVideo.asp)
3. dürft ihr raten, welche Seite es ist :D (http://www.codeproject.com/cs/media/DirXVidStrm.asp)
Ok, ein wenig eintönig, doch kann man auf www.codeproject.com recht vieles über soclhe Sachen finden.
Na gut... Nun hast du deine Bilder ("Vergleicher" kannst du auch irgendwo auf der oben genannten Seite finden) und weißt auch, in welche Richtung sie sich bewegen (einfach drei Bilder hintereinander vergleichen, dann hast du einen Bewegungsvektor). Nun musst du auf dem LPT-Port (C-Befehle: CreateFile(), WirteFile() ) dem Servo/Schrittmotor (wobei ich perönlich einen Schrittmotor verwenden würde, einfacher anzusteuern :)) die Befehle übermitteln. Danach noch einmal überprüfen, ob die Person/Gegenstand wieder in die Mitte des Bildes gerückt ist, wenn nicht, weiter justieren, ansonsten wieder Bilder machen und sie vergleichen...
Und natürlich die Bilderfolge auf der Festplatte spoeicher oder sonstwas damit machen :D
MfG
Mobius
P.S.: Schnell ist relativ... So 2-10 Bilder pro Sekunde sollte ein Computer, der nichts anderes zu tun hat (und dessen Geschwindigkeit die 400MHz Grenze übersteigt) schon schaffen. Hängt aber extrem vom Algorythmus ab, der die Bilder vergleicht. Als ein guter Algorythmus kann bis zu (PI * Daumen) 50% Erhöhung führen. Ansonsten ist die Frage, was du mit den Bildern machen möchtest... Aber mMn ist es schier unmöglich über 25 fps zu schaffen (und damit ein Film aufzunehmen, etc.) wieder ist der Kolos die Bildinterpretation und an der kommst du nicht vorbei...
kleine Anmerkung zum Thema Rechenleistung und guter Algorithmus:
Wir haben bei uns hier im Labor so eine nette kleine Kamera, die genau das macht. Das Teil ist von Siemens, hat nen Anschluss zum direkt an ne SPS anschließen und kosten rund 2000 Euro.
Aber darin werkelt nur ein 486er unter MS-DOS.
Also lässt sich da mit nem guten Algorithmus sehr viel machen...
Bomberman
19.11.2004, 11:32
Hallo Rippchen 12,
habe mir über die Verfolgung von Personen mittels Kamera auch schon Gedanken gemacht.
Man müßte per Infrarotsensor die Person detektieren können.
Dazu muß der Sensor die Umgebung in spitzem Winkel abtasten und auf Körperwärme reagieren.
Deine Kamera müßte mit 3 dieser Sensoren ausgestattet werden, damit der mittlere die Person erfaßt hält und die beiden anderen die Bewegung aus dem Erfassungsbereich feststellen können.
Das ist recht leicht auszuwerten und mit einem Mikrocontroller auf z.B. Schrittmotoren umzusetzen.
Problem Hierbei ist die Sensorik in entsprechender Reichweite zu bekommen. Da könnte Dir eventuell ein handelsüblicher billiger Bewegungsmelder weiterhelfen, wie er meist an Lampen angebracht ist.
Den Erfassungswinkel kannst Du mit Abdeckungen verändern.
Ciao
Patrick
the_Ghost666
29.11.2004, 16:56
das mit den bewegungsmeldern wird schwer, denn die reagieren auf sich bewegende wärme, will heißen wenn du den sensor bewegst, reagiert er auch auf stehende wärmesignaturen
Bewegungsvektordetektion ist auf jeden Fall der beste Ansatz. Genau das macht auch Mpeg-4, also vielleicht kannst du unter Mpeg-4 was finden
Bomberman
30.11.2004, 12:42
@the_Ghost666:
Das ist wohl korrekt, aber wenn man schon einen Mikrocontroller nutzt, kann man die Kleinigkeit auch noch abfangen.
Außerdem ist das doch garnicht schlecht, wenn ich den Sensor bewege und die stehende Person gerät in den Erfassungsbereich des mittleren Sensors, dann habe ich doch genau das was ich wollte:
Die Person im Bereich des Mittleren Sensors erkannt.
Ciao
Patrick
the_Ghost666
05.12.2004, 11:04
@ bomberman
ja klar, aber denk dran, dass der sensor auf JEDE hitzequelle in der größe eines menschen reagiert, meist sind de ja so eingestellt, dass eine katze oder so die dinger nicht auslöst. aber die hitze eines vorbeifahrenden autos reicht auf jeden fall
Bomberman
06.12.2004, 08:06
@the_Ghost666
Stimmt! Je nach Melder kann man die Sensität einstellen oder auch nicht.
Rippchen12 will ein Grundstück überwachen. Wenn das Eingezäunt ist sehe ich mit Motorenwärme kein Problem - eher mit Katzen.
Das fände ich allerdings nicht sonderlich schlimm, denn wenn eine Katze erkannt wird, dann erst recht eine Person ;-)
Ciao
Patrick
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.