我正试着通过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会发生变化,并导致在纹理中绘制的人是新的人。
发布于 2013-03-03 12:33:32
好了,我知道怎么做了。
我需要获取骨架ID (0到5),它映射到深度像素user (1到6)。因此,当传感器发现骨骼时,它会保存ID,并将其设置为playerId。仅当传感器丢失与其关联的骨架时,才会清除PlayerId。
https://stackoverflow.com/questions/15182288
复制相似问题