Похоже, что они отображают не полное облако точек, а карту интенсивности с синим оттенком. Это можно сделать с помощью изображения глубины из Kinect for Windows sdk. То, что вы ищете, это индекс игрока. Это предоставленный бит в каждом пикселе изображения глубины. Чтобы получить бит индекса игрока, вы также должны включить скелетный поток в своем коде инициализации.
Вот как бы я поступил. Я изменяю один из кратких руководств по Kinect для Windows SDK, которые можно найти здесь загрузите его и внесите следующие изменения:
//Change image type to BGRA32
image1.Source =
BitmapSource.Create(depthFrame.Width, depthFrame.Height,
96, 96, PixelFormats.Bgra32, null, pixels, stride);
//hardcoded locations to Blue, Green, Red, Alpha (BGRA) index positions
const int BlueIndex = 0;
const int GreenIndex = 1;
const int RedIndex = 2;
const int AlphaIndex = 3;
//get player and depth at pixel
int player = rawDepthData[depthIndex] & DepthImageFrame.PlayerIndexBitmask;
int depth = rawDepthData[depthIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth;
//check each pixel for player, if player is blue intensity.
if (player > 0)
{
pixels[colorIndex + BlueIndex] = 255;
pixels[colorIndex + GreenIndex] = intensity;
pixels[colorIndex + RedIndex] = intensity;
pixels[colorIndex + AlphaIndex] = 100;
}
else
{
//if not player make black and transparent
pixels[colorIndex + BlueIndex] = 000;
pixels[colorIndex + GreenIndex] = 000;
pixels[colorIndex + RedIndex] = 000;
pixels[colorIndex + AlphaIndex] = 0;
}
Мне нравится использовать этот пример для тестирования цветов, так как он по-прежнему предоставляет вам средство просмотра глубины с правой стороны. Я прикрепил изображение этого эффекта ниже:
![введите здесь описание изображения](https://i.stack.imgur.com/4myBz.png)
Изображение слева представляет собой карту интенсивности со слегка окрашенными данными интенсивности на уровне пикселей.
Надеюсь, это поможет Дэвиду Бейтсу
person
davidbates
schedule
01.07.2012