simpleOpenNI多个用户

时间:2015-08-02 13:16:44

标签: processing kinect simple-openni

我正在使用带有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);
    }
  }

}

1 个答案:

答案 0 :(得分:1)

OpenNI中的自动场景分割很不错,但并不完美。 有时您会注意到背景的某些部分可能与用户合并(如果背景很复杂)并且用户检测是估计:它可能无法跟踪正确进入/退出场景的用户。

即使有一两个用户,您也会注意到退出和进入场景的同一个人可能被分配了不同的用户ID,最好的办法是自己管理用户。

这可能不是一件容易的事,但也许你可以尝试OpenTSPS,因为它提供了一些这样的功能,plays well with Processing

OpenTSPS Person Events

OpenTSPS Basics

OpenTSPS Advanced