FarbFinger

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Final.png

Idee und Konzept

Die Idee zu Malen, mit dem was jeder Laptop hat, einer Kamera und einem Bildschirm, ohne die Maus zu verwenden. Hierzu nimmt die Webcam ein Bild auf und erkennt anhand eines Markers wo gemalt werden soll. Mithilfe eines zweiten Markers kann das Malen erst pausiert werden und in einem zweiten Schritt die Farbe für den Marker geändert werden können. So können verschiedenfarbige Linien gezeichnet werden.

Komponenten

Die benötigten Komponenten sind:

Zeichenfläche

Die Zeichenfläche ist hier ein Echtzeitbild in das man hineinmalen kann. Höhe und Breite sind variabel einstellbar müssen aber zur Auflösung der Kamera passen.

Stift

Der Stift ist ein gelbes Objekt, welches automatisch erkannt wird. Die Linien werden im Mittelpunkt der erkannten Fläche gezeichnet.

Funktionsmarker und Farbauswahl

Der Funktionsmarker (grünes Objekt) ist für das Pausieren und die Auswahl der Farbe zuständig. Wird er über das Pausefeld (weißes Feld links unten in der Zeichenfläche) gehalten wird ein Timer angezeigt, welcher auf die verbleibende Zeit bis zum Pausieren des Malvorgangs hinweist. Ist der Malvorgang pausiert, kann mit dem Marker auch die Farbe (rot, grün, blau) gewählt werden. Um weiter zu zeichnen muss der Malvorgang durch wiederholtes Halten des Markers über das Pausefeld fortgesetzt werden.

Schnittstellen

Bildschirmfoto zu 2020-01-15 12-07-40.png

Wie schon oben beschrieben, ist hier nur eine Webcam und ein Rechner nötig.

Programmierung

Erkennung Marker

Die Kamera liefert ein RGB-Bild, welches in drei HSV-Bilder umgewandelt wird. Das Hue-Bild wird zusammen mit dem Sat-Bild Pixel für Pixel auf einen Farbbereich abgefragt. So wird ein Schwarz-Weiß-Bild erstellt, welcher den abgefragten Farbbereich schwarz darstellt und den Rest des Bildes weiß. Das so erzeugte Schwarz-Weiß-Bild kann nun mit einem Konturenfinder, welcher die schwarze Fläche erkennt die Koordinaten des Objekts liefern.

ROI

Um das Malen zu pausieren wird einfach abgefragt, ob der Zeiger für eine gewisse Anzahl an Frames in der fraglichen Region war. Hierzu wird ein Bereich definiert und ein Counter bis [Anzahl Sekunden]*25 (da 25 FPS Bildwiederholrate) gezählt und nach gewünschter Länge pausiert, sowie der Counter zurückgesetzt.

Komponenten

Programmcode und Ressourcen

Projektdateien