C# 无法读取kinect的骨架

C# 无法读取kinect的骨架,c#,kinect,kinect-sdk,C#,Kinect,Kinect Sdk,我是kinect编程新手,我正在尝试映射一个框架,但它无法正常工作我正在使用1.6版的kinect sdk,我的代码正在运行,但当它到达这一部分时,它停止了: void kinectsensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { SkeletonFrame skeletonSet = e.OpenSkeletonFrame(); // Skel

我是kinect编程新手,我正在尝试映射一个框架,但它无法正常工作我正在使用1.6版的kinect sdk,我的代码正在运行,但当它到达这一部分时,它停止了:

void kinectsensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {
           SkeletonFrame skeletonSet = e.OpenSkeletonFrame();

     //   Skeleton skeletonData = new Skeleton[kinectsensor.SkeletonStream.FrameSkeletonArrayLength];

        **Skeleton skeletonData = (from s in skeletons
                             where s.TrackingState == SkeletonTrackingState.Tracked
                             select s).FirstOrDefault();**
        if (skeletonData != null)


        {
            SetEllipsePosition(Head, skeletonData.Joints[JointType.Head]);
            SetEllipsePosition(leftHand, skeletonData.Joints[JointType.HandLeft]);
            SetEllipsePosition(rightHand, skeletonData.Joints[JointType.HandRight]);
            ProcessGesture(skeletonData.Joints[JointType.Head], skeletonData.Joints[JointType.HandLeft], skeletonData.Joints[JointType.HandRight]);
        }
    }
我得到的警告信息是:

从未分配“KinectSkeletonApplication3.MainWindow.Skelets” 到,并且其默认值始终为空


我对Kinect的编程了解不多,但您需要从某些方面分配skeletons数组,可能需要使用典型的
SkeletonFrameReady
回调,如下所示:

private Skeleton[] skeletonData;

private void SkeletonsReady(object sender, SkeletonFrameReadyEventArgs e)
{
    using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
    {
        if (skeletonFrame != null)
        {
            int skeletonSlot = 0;

            if ((this.skeletonData == null) || (this.skeletonData.Length != skeletonFrame.SkeletonArrayLength))
            {
                this.skeletonData = new Skeleton[skeletonFrame.SkeletonArrayLength];
            }

            skeletonFrame.CopySkeletonDataTo(this.skeletonData);

            foreach (Skeleton skeleton in this.skeletonData)
            {
                if (SkeletonTrackingState.Tracked == skeleton.TrackingState)
                {
                    // `skeleton` is an actively tracked skeleton
                }
            }
        }
    }
}

您可以在和站点中找到许多这样的示例。

骨骼在哪里声明?它似乎从未设置过。我在public main window()前面声明了skelton:KinectSensor KinectSensor=KinectSensor.KinectSensors[0];骨架[]骨架;您是否分配过任何内容?没有,我没有分配任何内容。我使用的是Microsoft.Kinect,而不是Microsoft.Research.Kinect reference