1

Kinect深度カメラを使用して1人のプレーヤーを分離しようとしています。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;                                                                
      }    
 }

destOpenGLテクスチャです。

私が抱えている問題はplayer、2人目の人物がフレームに足を踏み入れると変数が変化し、テクスチャに描かれた人物が新しい人物になることです。

4

1 に答える 1

1

OK、私はそれを行う方法を理解しました。

深度ピクセル ユーザー (1 ~ 6) にマップされる骨格 ID (0 ~ 5) を取得する必要がありました。そのため、センサーがスケルトンを検出すると、ID を保存し、それを playerId に設定しました。PlayerId は、関連するスケルトンがセンサーによって失われた場合にのみクリアされます。

于 2013-03-03T04:33:31.677 に答える