我正在使用带有Kinect的simpleOpenNI。我有一个5种颜色的阵列和一定数量的人(12-13)将逐一出现在kinect前面。我需要将单一颜色与单个人联系起来。当颜色数组的索引到达5时,它将被重置为0.我的问题是我不能做'new user = index ++'这样的事情,因为每次退出时userId似乎都没有改变kinect空间和一个新的进入。 我的问题是我不明白检测到新用户的时间/地点。
我想我应该在这部分代码中做些什么,但不确定
void draw()
{
// update the cam
context.update();
// draw depthImageMap
image(context.rgbImage(),0,0,200, 200);
// draw the skeleton if it's available
int[] userList = context.getUsers();
for(int i=0;i<userList.length;i++)
{
if(context.isTrackingSkeleton(userList[i]))
{
stroke(userClr[ (userList[i] - 1) % userClr.length ] );
drawSkeleton(userList[i]);
draw_line(xL, yL, oldXL, oldYL, xR, yR, oldXR, oldYR);
}
}
}
答案 0 :(得分:1)
OpenNI中的自动场景分割很不错,但并不完美。 有时您会注意到背景的某些部分可能与用户合并(如果背景很复杂)并且用户检测是估计:它可能无法跟踪正确进入/退出场景的用户。
即使有一两个用户,您也会注意到退出和进入场景的同一个人可能被分配了不同的用户ID,最好的办法是自己管理用户。
这可能不是一件容易的事,但也许你可以尝试OpenTSPS,因为它提供了一些这样的功能,plays well with Processing