当我尝试运行我的骨架跟踪代码以测试我添加的以下代码行时,它会因错误而崩溃。
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 =对象引用未设置为对象的实例。 ..... Source = SkeletalTracking
更新: 如果我已将初始化移动到与录像机调用相同的功能中。
答案 0 :(得分:1)
根据您发布的代码,您永远不会初始化KinectRecorder
。
this.Recorder.Record(skeletonFrame); // I get an error after the RGB camera view freezes
...会生成一个空指针,因为Recorder
从未初始化。除非你在这里的代码示例中遗漏了那部分内容。您可以在声明时进行,如果愿意,也可以在以后进行。
KienctRecorder Recorder = new KinectRecorder(options, stream);
需要为适当的options
设置 KinectRecordOptions
。 stream
是您的输出Stream
。