Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Color Tracking

Februar 27, 2012

Nun konnten wir auch mit Video arbeiten. Mit Hilfe der Webcam, konnten wir ein eigenes Programm schreiben, welches mit Tracking Punkten irgendwie funktionierte. Ich habe die Tracking Punkte als Farbstifte verwendet. Mit einem Klick auf einen Punkt, nahm es die Farbe an und man konnte damit auf den Bildschirm zeichnen. Die Farbe wechselte man einfach mit einen Klick auf einen andersfarbigen Punkt. Wenn man auf eine beliebige Taste drückt, wird der Bildschirm wieder sauber, und man kann wieder ein neues Bild kreieren.

import processing.video.*;
PGraphics buffer;

Capture video;
PShape s_g;
color trackColor;

void setup()
{
 size(960,720);

 video = new Capture(this,width,height,30);
 trackColor = color(255,0,0);

smooth();

 buffer = createGraphics(width,height,P2D);
}

void draw() 
{
 if (video.available())
 {
 video.read();
 }
 video.loadPixels();
 image(video,0,0);
 image(buffer,0,0);

 int closestX = 0;
 int closestY = 0;

 for (int x = 0; x < video.width; x ++ )
 {
 for (int y = 0; y < video.height; y ++ )
 {
 int loc = x + y*video.width;
 color currentColor = video.pixels[loc];
 float r1 = red(currentColor);
 float g1 = green(currentColor);
 float b1 = blue(currentColor);
 float r2 = red(trackColor);
 float g2 = green(trackColor);
 float b2 = blue(trackColor);

 float d = dist(r1,g1,b1,r2,g2,b2);


 if (d < worldRecord) 
{
 worldRecord = d;
 closestX = x;
 closestY = y;
 }
 }
 }

if (worldRecord < 8)
 {
 buffer.beginDraw();
 buffer.fill(trackColor);
 buffer.strokeWeight(1.0);
 buffer.stroke(0);
 buffer.ellipse(closestX,closestY,20,20);
 buffer.endDraw();
 }

}

void mousePressed()
{
 int loc = mouseX + mouseY*video.width;
 trackColor = video.pixels[loc];
}

void keyPressed()
{
 buffer = createGraphics(width,height,P2D);
}