2016年5月5日 星期四

Week11_許志遙_Kinect

1.1 繼續上次使用 Kinect ToolKit ,這次使用這項範例程式

1.2 開啟後,除了能掃描畫面,還能夠儲存stl,obj,fly檔案

1.3 之後到網路上下載Mesh Lab

1.4 可以簡單開啟剛剛掃描出來的模型檔


2. Processing寫程式
2.1 頭頂足球

import SimpleOpenNI.*;

SimpleOpenNI openni;
void setup()
{
  size(600,400);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  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.2 抓出頭和腳

import SimpleOpenNI.*;

SimpleOpenNI openni;
void setup()
{
  size(600,400);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  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 = openni.getJointPositionSkeleton(
      userId,SimpleOpenNI.SKEL_LEFT_FOOT,pos1);
      ellipse(XPos(pos1), YPos(pos1), 50, 50);
      println("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,pos2);
      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);
}




沒有留言:

張貼留言