iejun
YaBB Newbies
Offline
Posts: 2
Re: looking for a tutorial: particle to tracking c
Reply #1 - Aug 8th , 2005, 8:51pm
import processing.video.*; Capture video; color trackColor; void setup() { size(320, 240); framerate(30); colorMode(RGB,255,255,255,100); // Using the default capture device video = new Capture(this, 320, 240, 12); trackColor = color(255); // Start off tracking for white noFill(); smooth(); strokeWeight(4.0); stroke(0); } void captureEvent(Capture camera) { camera.read(); } void draw() { loadPixels(); // Draw the video image on the background image(video,0,0); // Local variables to track the color float closestDiff = 500.0f; int closestX = 0; int closestY = 0; // Begin loop to walk through every pixel for ( int x = 0; x < video.width; x++) { for ( int y = 0; y < video.height; y++) { int loc = x + y*video.width; // What is current color 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); // Using euclidean distance to compare colors float d = dist(r1,g1,b1,r2,g2,b2); // If current color is more similar to tracked color than // closest color, save current location and current difference if (d < closestDiff) { closestDiff = d; closestX = x; closestY = y; } } } // Draw a circle at the tracked pixel ellipse(closestX,closestY,16,16); } void mousePressed() { // Save color where the mouse is clicked in trackColor variable int loc = mouseX + mouseY*video.width; trackColor = video.pixels[loc]; }