Kinect V.2将流保存到二进制文件并重放它

时间:2016-02-28 23:21:12

标签: c# kinect depth

道歉,如果之前已经提出这个问题,我找不到。 我尝试使用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看起来很简单,难以浏览。

0 个答案:

没有答案