所以先下載下來
之後老師讓我們試打了一串程式碼
製作人體的骨架
不過目前只有測試頭部的那個點
點可以隨著頭部移動而移動
白色為點 綠色為人(每個人顏色不一樣)
(不過這是2D圖像,之後要改為3D)
程式碼:
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);
}
範例檔
之後老師教我們找到頭部 左腳 右腳 的三個點(骨架)
雖然有時候會亂掉,不過還是算成功啦
程式碼:
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;
confidence = openni.getJointPositionSkeleton(//confidence是一種是否偵測完整的一種數值
userId,SimpleOpenNI.SKEL_HEAD,pos);
ellipse(Xpos(pos),Ypos(pos),50,50);//頭點
confidence = openni.getJointPositionSkeleton(
userId,SimpleOpenNI.SKEL_LEFT_FOOT,pos1);
ellipse(Xpos(pos1),Ypos(pos1),50,50);//左腳點
confidence = openni.getJointPositionSkeleton(
userId,SimpleOpenNI.SKEL_RIGHT_FOOT,pos2);
ellipse(Xpos(pos2),Ypos(pos2),50,50);//右腳點
println(pos+""+pos1+""+pos2);
}
}
void onNewUser(SimpleOpenNI openni,int userId){
openni.startTrackingSkeleton(userId);
}
沒有留言:
張貼留言