0

当我尝试运行我的骨骼跟踪代码来测试我添加的以下代码行时,它会因错误而崩溃。

    void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e)
    {
        if (closing)
        {
            return;
        }

        //Get a skeleton
        Skeleton first = GetFirstSkeleton(e);

        if (first == null)
        {
            return;
        }


        using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
        {
            //if (skeletonFrame == null)
            //{
            //    return;
            //}
            this.recordStream = new MemoryStream(100);
            KinectRecorder Recorder = new KinectRecorder(KinectRecordOptions.Skeletons, recordStream);
            if (skeletonFrame != null)
            {
                this.Recorder.Record(skeletonFrame);
            }
            //StartRecord
           // Skeleton[] skeletonData = this.Recorder.Record(skeletonFrame);

        }
 // some more stuff
 }

我正在调用 Kinect 工具箱中可用的记录功能。

错误是:未处理 System.NullReferenceException ....... Message=Object reference not set to an instance of an object。..... Source=SkeletalTracking

更新:如果我将初始化移动到与记录器调用相同的函数中。

4

1 回答 1

1

根据您发布的代码,您永远不会初始化您的KinectRecorder.

this.Recorder.Record(skeletonFrame); // I get an error after the RGB camera view freezes

... 将产生一个空指针,因为Recorder从未初始化。除非您在此处的代码示例中忽略了该部分。您可以在声明时执行此操作,或者如果您愿意,可以稍后执行。

KienctRecorder Recorder = new KinectRecorder(options, stream);

options需要为你设置合适的KinectRecordOptionsstream是你的输出Stream

于 2012-12-03T21:15:46.667 回答