0
我是圖像處理新手。我如何使用Simple OpenNI中的getUserPixels()來處理多個用戶?這是什麼參數?我將如何設置此代碼?簡單OpenNI getUserPixels
我是圖像處理新手。我如何使用Simple OpenNI中的getUserPixels()來處理多個用戶?這是什麼參數?我將如何設置此代碼?簡單OpenNI getUserPixels
這個想法是跟蹤檢測到的用戶。
sceneImage()/sceneMap()
函數可以方便地跟蹤用戶像素,但是我還希望啓用SKEL_PROFILE_NONE
配置文件來跟蹤用戶。
這適用於返回一個整數的onNewUser
和onLostUser
事件:該用戶的ID。此ID對於跟蹤總用戶或最近檢測到的用戶非常重要。 一旦你有了用戶的ID,你可以將其插入到其他SimpleOpenNI功能中,如getCoM()
,它返回用戶的「質心」(它的身體中心的x,y,z位置)。
所以,你可以使用上面提到的用戶事件來更新用戶的內部列表:
import SimpleOpenNI.*;
SimpleOpenNI context;
ArrayList<Integer> users = new ArrayList<Integer>();//a list to keep track of users
PVector pos = new PVector();//the position of the current user will be stored here
void setup(){
size(640,480);
context = new SimpleOpenNI(this);
context.enableDepth();
context.enableScene();
context.enableUser(SimpleOpenNI.SKEL_PROFILE_NONE);//enable basic user features like centre of mass(CoM)
}
void draw(){
context.update();
image(context.sceneImage(),0,0);
if(users.size() > 0){//if there are any users
for(int user : users){//for each user
context.getCoM(user,pos);//get the xyz pozition
text("user " + user + " is at: " + ((int)pos.x+","+(int)pos.y+","+(int)pos.z+",")+"\n",mouseX,mouseY);//and draw it on screen
}
}
}
void onNewUser(int userId){
println("detected" + userId);
users.add(userId);//a new user was detected add the id to the list
}
void onLostUser(int userId){
println("lost: " + userId);
//not 100% sure if users.remove(userId) will remove the element with value userId or the element at index userId
users.remove((Integer)userId);//user was lost, remove the id from the list
}
HTH