C#错误的Kinect骨架跟踪机制或程序错误(更可能是后者)

时间:2014-05-28 20:37:25

标签: c# debugging tracking kinect-sdk kinect.toolbox

我一直在尝试使用骨架追踪为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

0 个答案:

没有答案