We closed this forum 18 June 2010. It has served us well since 2005 as the ALPHA forum did before it from 2002 to 2005. New discussions are ongoing at the new URL http://forum.processing.org. You'll need to sign up and get a new user account. We're sorry about that inconvenience, but we think it's better in the long run. The content on this forum will remain online.
IndexProgramming Questions & HelpVideo Capture,  Movie Playback,  Vision Libraries › looking for a tutorial: particle to tracking color
Page Index Toggle Pages: 1
looking for a tutorial: particle to tracking color (Read 1258 times)
looking for a tutorial: particle to tracking color
Aug 8th, 2005, 2:08am
 
hi all,

do you guy's know where I can find a tutorial that explains how to connect a particle to a tracking color ?

regards iejun
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];
}
Page Index Toggle Pages: 1