我一直在尝试使用骨骼跟踪为 Kinect 编写一个程序,该程序将确定是否有人/一个人(坐着或站着)在 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