道歉,如果之前已经提出这个问题,我找不到。
我尝试使用sdk 2.0
将深度流从Xbox One Kinect相机(使用C#
)保存到.bin文件。我正在使用DepthBasics-WPF
中的示例代码,我想将流保存到文件中,然后在进行进一步的操作之前将其读取。
保存流后,我想通过从文件中读取它并将其传递给事件处理程序(例如Reader_FrameReady
)来重放它(在应用程序的另一部分中)。
我找到了一个帮助我保存流的教程,但它已经过时了(sdk 1.8
)并且很多事情都发生了变化。
这是我目前为止的代码示例,仅包含保存部分。如果我只保存下面代码中显示的礼节/参数就足够了吗?
class DepthRecorder
{
DateTime referenceTime;
readonly BinaryWriter writer;
internal DepthRecorder(BinaryWriter writer)
{
this.writer = writer;
referenceTime = DateTime.Now;
}
public void Record(DepthFrame frame)
{
// Header
writer.Write(2);//depth data
// Data
TimeSpan timeSpan = DateTime.Now.Subtract(referenceTime);
referenceTime = DateTime.Now;
writer.Write((long)timeSpan.TotalMilliseconds);
writer.Write(frame.FrameDescription.BytesPerPixel);
writer.Write(frame.FrameDescription.Width);
writer.Write(frame.FrameDescription.Height);
// Bytes
ushort[] ushorts = new ushort[frame.FrameDescription.LengthInPixels];
frame.CopyFrameDataToArray(ushorts);
writer.Write(ushorts.Length);
foreach (short s in ushorts)
{
writer.Write(s);
}
}
}
即使是使用sdk 2.0的文档/教程也非常方便,因为MSDN看起来很简单,难以浏览。