0

我一直在尝试使用骨骼跟踪为 Kinect 编写一个程序,该程序将确定是否有人/一个人(坐着或站着)在 Kinect 前面。

问题是我的程序总是输出“假”(意味着它没有检测到骨架)。查阅以下链接后,

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
4

0 回答 0