找不到名为' Robot'

时间:2016-05-28 05:56:12

标签: java

我正在创建一个通过面部检测移动鼠标光标的程序。我在网上找到了this程序,我正在弄清楚如何改变它。

我得到的唯一错误是它找不到名为Robot的类。我确实尝试用标签,空格等来解决它,但我无法弄清问题是什么。

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();
}

1 个答案:

答案 0 :(得分:0)

您可能需要先在代码顶部导入Robot

import java.awt.Robot;

另外,您可能想查看一个可以提供OpenCV Processing等面部检测的新库