在Kinect深度相机中隔离玩家

Isolating Player in Kinect Depth Camera

本文关键字:隔离 玩家 相机 Kinect 深度      更新时间:2023-10-16

我试图通过Kinect深度摄像头隔离单个玩家。我打开一个NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX流来处理玩家/深度信息。我用来绘制玩家的代码是这样的:

if (LockedRect.Pitch != 0 ) {
      USHORT* curr = (USHORT*) LockedRect.pBits;
      const USHORT* dataEnd = curr + ((width/2)*(height/2));
      index = 0;
      while (curr < dataEnd && playerId != 0) {
        USHORT depth     = *curr;
        USHORT realDepth = NuiDepthPixelToDepth(depth);
        BYTE intensity = 255;
        USHORT player    = NuiDepthPixelToPlayerIndex(depth);

        // Only colour in the player
        if (player == playerId) {
          for (int i = index; i < index + 4; i++)
            dest[i] = intensity;
        }
        else {
          for (int i = index; i < index + 4; i++)
            dest[i] = 0;
        }
        index += 4;
        curr += 1;                                                                
      }    
 }

dest是OpenGL纹理。

我遇到的问题是,当第二个人进入帧时,变量player会发生变化,并导致纹理中绘制的人成为新人。

好了,我知道怎么做了。

我需要获得骨骼ID(0到5),它映射到深度像素用户(1到6)。所以当传感器发现骨骼时,它保存ID,并将其设置为playerId。PlayerId只有在关联骨架被传感器丢失时才会被清除。