我一直在尝试使用骨架追踪为Kinect编写一个程序,该程序将决定是否有人/人(坐着或站着)在Kinect前面。
问题是我的程序总是输出“false”(意味着它没有检测到骨架)。在咨询以下链接后,
Kinect SDK player detection Kinect user Detection
我不能为我的生活找出为什么程序会这样做。也许我的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