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