Я пытался написать программу для Kinect с использованием отслеживания скелета, которая будет определять, есть ли люди/человек (сидящий или стоящий) перед Kinect.
Проблема в том, что моя программа всегда выводит "false" (это означает, что скелет не обнаружен). После консультации по ссылкам ниже,
Обнаружение проигрывателя Kinect SDK Обнаружение пользователя Kinect
Я не могу понять, почему программа это делает. Возможно, в моем Kinect есть неисправный механизм отслеживания скелета, но я думаю, что гораздо более вероятно, что в моей программе есть ошибка. Я был бы очень признателен за любой вклад.
bool TryGettingSkeleton(AllFramesReadyEventArgs e) {
using (SkeletonFrame skeletonFrame=e.OpenSkeletonFrame())
{
int playerCount=0;
if (skeletonFrame != null)
{
Skeleton[] skeletonData = new Skeleton[kinectSensorChooser1.Kinect.SkeletonStream.FrameSkeletonArrayLength];
skeletonFrame.CopySkeletonDataTo(skeletonData);
foreach (Skeleton skeleton in skeletonData)//check all the skeletons, see which ones are tracked as sitting/standing
{
if (skeleton.TrackingState == SkeletonTrackingState.Tracked || skeleton.TrackingState == SkeletonTrackingState.PositionOnly)
playerCount++;
}
if (playerCount > 0)
return true;//there is at least one skeleton present
else
return false;
}
else
{
return false;//no skeleton frame data, thus assume no skeleton
}
}//ends using
}//ends TryGettingSkeleton method