2016-05-24 5 views
0

Ich arbeite an einem Projekt auf der virtuellen Tastatur. Mit der Webcam möchte ich schwarze Tasten auf einer projizierten Tastatur an einer Wand erkennen (projiziert mit einem Projektor).Erkennen Sie schwarze Rechtecke auf weißem Blatt von Webcam-Video mit Python OpenCV

Die Tastatur verfügt über weißen Hintergrund mit schwarzen Tasten - Image of keyboard

Wie es projiziert wird, wird es einige kontinuierliche Bewegung der Tastatur, obwohl wenig. Nach meinem Verständnis muss ich dieses weiße Rechteck erkennen und dann die schwarzen Tasten für jedes Bild weiter erkennen.

Können Sie bitte sagen, ob das korrekt ist? Wie gehe ich mit Python und OpenCV vor?

Vielen Dank!

Antwort

1

Ich stelle mir vor, dass Sie eine funktionierende projizierte Tastatur erstellen möchten. Wenn dies der Fall ist, müssen Sie zuerst die Position der projizierten Tasten im Webcambild abbilden. Dann erkennen Sie eine "Presse" -Position in diesem Bild. Durch den Vergleich der beiden Informationen können Sie einen "Tastendruck" erkennen. überhaupt erst, seit dem Erkennen der "Presse" Position ist das härtere, was stellst du dir vor, das zu tun? (Ich werde Ihnen dann sagen, was getan werden kann, um die Schlüsselpositionen abzubilden) (das ist ein ernsthaft fortgeschrittenes Projekt)

+0

Ja, ich möchte genau das tun. Aber die erste Schwierigkeit besteht darin, die Tastatur als Eingabe von der Webcam zu nehmen, die schwarzen Tasten (Rechtecke) getrennt zu erfassen und ihre Koordinaten zu speichern (z. B. Zentroid in einer Datei). Ich habe diesen Ansatz in MATLAB verwendet. Wie nehme ich Frame-für-Frame-Input vom Webcam-Video und verwende die Erkennung von Rechtecken? – borb183

+0

Und ich werde versuchen, den "Tastendruck" mit einem roten Band am Finger zu erkennen. Wahrscheinlich werden nachfolgende Bilder abgezogen und nur für die rote Farbe gefiltert. Erstellen Sie eine Box darum und nehmen Sie ihren Schwerpunkt. So können beide Schwerpunkte von jetzt an verglichen werden – borb183

+0

für diese Aufgabe können Sie die Klasse Blobdetector http://www.learnopencv.com/blob-detection-using-opencv-python-c/ verwenden, aber ich finde es besser, das "projizierte Bild zu kartieren Koordinaten vs Quelle Bildkoordinatenfunktion "durch Projektion eines bekannten Patern, dann tun eine" collission detection "betwin der projectedToSourcePOS (gedrückt pos) und die" Quellen Tasten Kolonien Boxen " – user5698387