2016-05-28 23 views
0

私は、顔検出によってマウスカーソルを移動するプログラムを作成しています。私は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(); 
} 

答えて

0

あなたが最初にあなたのコードの先頭にRobotをインポートする必要があります。あなたはOpenCV Processing

のような顔検出を提供することができ、新しいライブラリをチェックアウトする場合があります、また

import java.awt.Robot; 

関連する問題