对 c++ 不是很熟悉,但我正在尝试将一些数据发送到 java/处理草图。问题是我不知道 xOpenNI 的 Open Frameworks 的用户数是多少。我想通过我的 kinect 相机统计多达 3 个用户。计算每个用户的平均值并将数据发送到我的处理草图以供进一步使用。
问题是,有时我会得到无数个第二个用户。有人能告诉我为什么吗?
使用 OpenNISample007.xcodeproj
我已将其改编为脚本:
if (isMasking) drawMasks();
for (int i=1; i< recordUser.getNumberOfTrackedUsers()+1; i++){
if (isCloud) drawPointCloud(&recordUser, i); // 0 gives you all point clouds; use userID to see point clouds for specific users
}
然后我使用 pointCloud 信息通过 OSC 发送平均值
float positionsX ;
float positionsBegin;
int counter = 0;
for(int y = 0; y < h; y += step) {
for(int x = 0; x < w; x += step) {
ofPoint pos = user_generator->getWorldCoordinateAt(x, y, userID);
if (pos.z == 0 && isCPBkgnd) continue; // gets rid of background -> still a bit weird if userID > 0...
ofColor color = user_generator->getWorldColorAt(x,y, userID);
// glColor4ub((unsigned char)color.r, (unsigned char)color.g, (unsigned char)color.b, (unsigned char)color.a);
glVertex3f(pos.x, pos.y, pos.z);
positionsX+=pos.x;
if (x == 1){
positionsBegin = pos.x;
}
counter++;
}
}
float average = positionsX/counter;
cout<<"Average:"<<average<<endl;
//cout<<"positionsBegin:"<<positionsBegin<<endl;
ofxOscMessage m;
m.setAddress( "/persons" );
m.addIntArg( userID );
m.addFloatArg(average);
sender.sendMessage( m );