2016年5月5日 星期四

week11_02160092

足球遊戲

1.偵測到人頭
void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this);
openni.enableDepth();
openni.enableUser();
}
void draw(){
  openni.update();
  image(openni.userImage(),0,0,600,400);
  for(int userId : openni.getUsers()){
  PVector pos = new PVector(0,0,0);
  float confidence = openni.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_HEAD,pos);
  ellipse(pos.x,pos.y,50,50);
  println(pos);
  }
}
void onNewUser(SimpleOpenNI openni, int userId){
openni.startTrackingSkeleton(userId);
}











2.偵測到頭與左腳
import SimpleOpenNI.*;
SimpleOpenNI openni;
void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this);
openni.enableDepth();
openni.enableUser();
}
float Xpos(PVector pos){
  return width/2+pos.x*500/pos.z;
}
float Ypos(PVector pos){
  return height/2-pos.y*500/pos.z;
}
void draw(){
  openni.update();
  image(openni.userImage(),0,0,600,400);
  for(int userId : openni.getUsers()){
  PVector pos = new PVector(0,0,0);
  float confidence;
  confidence = openni.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_LEFT_FOOT,pos);
  ellipse(Xpos(pos),Ypos(pos),50,50);
  confidence = openni.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_HEAD,pos);
  ellipse(Xpos(pos),Ypos(pos),50,50);
  println(pos);
  }
}
void onNewUser(SimpleOpenNI openni, int userId){
openni.startTrackingSkeleton(userId);
}











3.偵測左右腳+頭
openni.enableDepth();
openni.enableUser();
}
float Xpos(PVector pos){
  return width/2+pos.x*500/pos.z;
}
float Ypos(PVector pos){
  return height/2-pos.y*500/pos.z;
}
void draw(){
  openni.update();
  image(openni.userImage(),0,0,600,400);
  for(int userId : openni.getUsers()){
  PVector pos = new PVector(0,0,0),pos1=new PVector(0,0,0),pos2=new PVector(0,0,0);
  float confidence;
  confidence = openni.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_LEFT_FOOT,pos);
  ellipse(Xpos(pos1),Ypos(pos1),50,50);
  print(" Foot: "+confidence);
  confidence = openni.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_HEAD,pos);
  ellipse(Xpos(pos),Ypos(pos),50,50);
  confidence = openni.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_RIGHT_FOOT,pos);
  ellipse(Xpos(pos2),Ypos(pos2),50,50);
  println(abs(pos1.y-pos2.y));
  if(confidence>0.6&&abs(pos1.y-pos2.y)>100){fill(255,0,0,128);rect(0,0,600,400);}
  }
}
void onNewUser(SimpleOpenNI openni, int userId){
openni.startTrackingSkeleton(userId);
}

沒有留言:

張貼留言