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