class
FingerDetector{
PImage out; |
int w,h; |
|
public FingerDetector( int _w, int _h){ |
w = _w; |
h = _h; |
out = createImage (w, h, RGB ); |
} |
|
void setImage( PImage img){ |
out. loadPixels (); |
|
|
for ( int k = 0; k <img. pixels . length ; k++){ |
out. pixels [k] = img. pixels [k]; |
} |
|
out. updatePixels (); |
} |
|
// PImage getImage(){ |
// return out; |
// } |
|
boolean goodPixel( int x, int y){ |
|
int count_white = 0; |
|
//Finger's tip model . |
float r = 120 / TWO_PI ; |
|
//The farest the hand is placed from the webcam |
//the smallest this needs to be set. |
int finger_size = 8 ; |
|
//For each pixels on the circumference |
//with radius 120/2*pi and with center |
//located at x,y (current pixel's coordinate)... |
for ( int k = 0; k < 360; k+=10){ |
int x1 = x + ( int )(r* cos (k)); |
int y1 = y + ( int )(r* sin (k)); |
|
if (x1 >= 0 && x1 < out. width && y1 >= 0 && y1 < out. height ) |
|
//...count how many are hand pixel... |
if ( brightness ((out. pixels [x1+y1*out. width ]&0xff0000)>>16)== 255){count_white++;} |
} |
|
//..if they are in the finger's tip region... |
if ( count_white < finger_size && count_white != 0) return true ; //...at x y coordinate we have a finger's tip pixel |
else |
return false ; |
|
} |
}
0 comments:
Post a Comment