Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import JMyron.*;
- import pFaceDetect.*;
- JMyron m;
- PFaceDetect face;
- PFaceDetect hand;
- PImage img;
- Robot robby;
- int search_width = 320;
- int search_height = 240;
- float actualX=search_width/2;
- float actualY=search_height/2;
- int x_rato = 0;
- int y_rato = 0;
- void setup() {
- size(320,240,P3D);
- m = new JMyron();
- m.start(width,height);
- face = new PFaceDetect(this,width,height, "haarcascade_frontalface_alt.xml");
- hand = new PFaceDetect(this,width,height, "aGest.xml");
- img = createImage(width,height,ARGB);
- noFill();
- stroke(255,0,0);
- try
- {
- robby = new Robot();
- }
- catch (AWTException e)
- {
- println("Robot class not supported by your system!");
- exit();
- }
- }
- void draw() {
- m.update();
- int[] imgNormal = m.cameraImage();
- this.loadPixels();
- for(int i=1; i<width;i++){
- for(int j=1;j<height;j++){
- this.pixels[(m.width() - i - 1) + j * m.width()] = imgNormal[(i) + j * m.width()];
- }
- }
- this.updatePixels();
- arraycopy(m.cameraImage(),img.pixels);
- face.findFaces(img);
- drawFace();
- hand.findFaces(img);
- drawHand();
- // code for drawing the lines
- line((width/2-10),0,(width/2-10),height);
- line((width/2+10),0,(width/2+10),height);
- line(0,(height/2-10),width,(height/2-10));
- line(0,(height/2+10),width,(height/2+10));
- //verifica posição do ponto
- //diagonal subir para direita
- if (actualX < (width/2-10) && actualY < (height/2-10))
- {
- x_rato = x_rato + 4;
- y_rato = y_rato - 4;
- }
- else if (actualX > (width/2+10) && actualY < (height/2-10))
- {
- x_rato = x_rato - 4;
- y_rato = y_rato - 4;
- }
- //subir
- else if (actualX < (width/2+10) && actualX > (width/2-10) && actualY < (height/2-10))
- {
- y_rato = y_rato - 4;
- }
- else if (actualX < (width/2+10) && actualX > (width/2-10) && actualY > (height/2+10))
- {
- y_rato = y_rato + 4;
- }
- else if (actualX < (width/2-10) && actualY > (height/2+10))
- {
- x_rato = x_rato + 4;
- y_rato = y_rato + 4;
- }
- //diagonal descer para esquerda
- else if (actualX > (width/2+10) && actualY > (height/2+10))
- {
- x_rato = x_rato - 4;
- y_rato = y_rato + 4;
- }
- else if (actualX > (width/2+10) && actualY < (height/2+10) && actualY > (height/2-10))
- {
- x_rato = x_rato - 4;
- }
- else if (actualX < (width/2-10) && actualY < (height/2+10) && actualY > (height/2-10))
- {
- x_rato = x_rato + 4;
- }
- print(actualY+"n");
- robby.mouseMove(screen.width/2+x_rato, screen.height/2+y_rato);
- }
- void drawFace() {
- int [][] res = face.getFaces();
- if (res.length>0) {
- for (int i=0;i<res.length;i++) {
- int x = res[i][0];
- int y = res[i][1];
- int w = res[i][2];
- int h = res[i][3];
- x = x + w/2;
- actualX = round(actualX + 0.1*(x-actualX));
- y = y + h/2;
- actualY = round(actualY + 0.1*(y-actualY));
- /*pushMatrix();
- strokeWeight(10);*/
- point(width-actualX, actualY);
- //popMatrix();
- }
- }
- }
- void drawHand() {
- int [][] res = hand.getFaces();
- if (res.length>0) {
- print("ai"+"n");
- robby.mousePress(InputEvent.BUTTON1_MASK);
- robby.delay(500);
- robby.mouseRelease(InputEvent.BUTTON1_MASK);
- }
- }
- void stop() {
- m.stop();
- super.stop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement