Erkennung von Menschen, die über eine Linie mit OpenCV
Ich möchte die Anzahl der Menschen, die über eine Zeile von beiden Seiten. Ich habe eine Kamera, die auf Decke und Dreharbeiten für den Boden, wo die Linie ist (Also Kamera sieht einfach nur top von Menschen-Köpfen; und so ist es mehr der Objekterkennung als Menschen detection).
Gibt es eine Beispiel-Lösung für dieses problem oder ähnliche Probleme wie diese? So kann ich von Ihnen lernen?
Edit 1: Mehr als eine person ist über die Linie, in jedem moment.
- Sind Sie sicher, dass Sie nicht wollen, um mehr tags auf Ihre Frage?
- Eigentlich bin ich ein C# Entwickler und ich fand Emgu ist ein cross-Plattform .NET wrapper für OpenCV. So werde ich C# verwenden. Aber ich dachte, es wäre unangebracht, zum hinzufügen weiterer tags wie C#. Und ich Schätze, wenn Sie schlagen andere tags; vielen Dank im Voraus.
- Dort gehen Sie, fügen Sie hinzu: C#, Emgu, video-Bearbeitung
- Gibt es irgendein Grund müssen Sie verwenden OpenCV und einer video-Kamera? Infrarot-Photodetektoren, die genau das tun, was Sie beschreiben, sind erhältlich im Baumarkt für unter $100.
- Hohen Bogen gibt Es kein "muss" hier. Wenn es so ist wie du sagst dann sollte ich glücklich sein und weitere Hinweise mehr als dankbar! Ich wusste nicht, über diese Kameras, und meine einzigen Vorgaben sind in der Frage beschriebenen: Die Linie und das verschieben von Kreisen (Menschen-Köpfe, vielleicht gedeckt hat oder so). Nochmals vielen Dank!
- Photodetektoren sind sehr Häufig in meiner Heimatstadt. Die meisten arbeiten durch die Erkennung von Störungen in der Infrarot-Strahlen, und werden verwendet, für Dinge wie das zählen von Kunden oder Türen zu öffnen. Sie können erhalten Detektoren mit Kameras, aber was Sie beschreiben, nicht eine, es sei denn, es gibt Anforderungen, die Sie nicht uns mitzuteilen. Sie können beginnen, durch Google-Suche: google.ca/search?q=photoelektrischen+beam+sensor
- Das ist keine option, leider! 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn nichts anderes, aber die Menschen unterliegen, die Grenze, dann müssen Sie nicht zu erkennen, die Menschen müssen Sie nur die Bewegung zu erfassen.
Es gibt mehrere Ansätze für motoin-Erkennung.
Wahrscheinlich das einfachste die Ihren Zielen entspricht. Sie einfach berechnen, die Differenz zwischen aufeinanderfolgenden frames von video-Streams und auf diese Weise festzustellen, "bewegungsmaske" und damit erkennen, line-crossing-Ereignis
Als eine Verbesserung dieser "Algorithmus" können Sie prüfen, "running average" Methode.
Zum ermitteln einer Richtung der Bewegung, die Sie verwenden können, "motion templates".
Zur Steigerung der Genauigkeit des Detektors können Sie versuchen, die hintergrund-Subtraktion-Technik (die wiederum ist nicht eine einfache Lösung). Zum Beispiel, wenn es einen bewegten hintergrund, die herausgefiltert werden sollen (z.B. mit Hilfe von statistischen Lern -)
Alle algorithmen erwähnt, die enthalten sind in OpenCV Bibliothek.
UPD:
cvCalcMotionGradient
,cvSegmentMotion
,cvUpdateMotionHistory
(Suche docs). OpenCV-Bibliothek enthält Beispiel-code für die Bewegungsanalyse, siehe motempl.cIch bin kein Experte in der video-Lebenslauf, aber wenn Sie können, reduzieren Sie das problem in einer endlichen Menge von Bildern (zum Beispiel Eingabe-frame, stehend auf der Linie, beenden Rahmen), dann Sie können eine von vielen Formen zu erkennen-algorithmen. Ich weiß von Form-Kontext, die ist gut, aber ich bezweifle, dass es subtil genug für diese Anwendung (es wird nicht sagen, der Unterschied zwischen einer Kopf-und die meisten anderen Runden Objekten).
Grundsätzlich versuchen, Sie zu extrahieren-Taste Bilder aus dem video, und dann testen Sie mit dem Hilfsmittel Formerkennung algorithmen.
P. S. das Finden der Schlüssel-Bilder möglich sein könnte, mit guter motion-detection-Methoden.