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); }