0

Kinect の前に人/人 (座っているか立っているか) がいるかどうかを判断する Skeletal Tracking を使用して、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
4

0 に答える 0