将Kinect帧保存为屏幕截图

时间:2014-11-27 20:18:40

标签: c# computer-vision kinect kinect-sdk

我刚刚开始使用Kinect编程,我很高兴能够同时显示RGB和IR图像。

现在使用屏幕截图按钮,我可以在需要时保存每个帧。 (与示例SDK中的过程相同)

所以现在如果我想继续保存这些帧,我该怎么做呢?

我是C#和Kinect编程的新手。那么有人可以帮助我吗?

感谢;

1 个答案:

答案 0 :(得分:1)

试试:

private unsafe void saveFrame(Object reference)
{
  MultiSourceFrame mSF = (MultiSourceFrame)reference;

  using (var frame = mSF.DepthFrameReference.AcquireFrame())
  {
      if (frame != null)
      {
          using (Microsoft.Kinect.KinectBuffer depthBuffer = frame.LockImageBuffer())
          {
              if ((frame.FrameDescription.Width * frame.FrameDescription.Height) == (depthBuffer.Size / frame.FrameDescription.BytesPerPixel))
              {
                  ushort* frameData = (ushort*)depthBuffer.UnderlyingBuffer;
                  byte[] rawDataConverted = new byte[(int)(depthBuffer.Size / 2)];


                  for (int i = 0; i < (int)(depthBuffer.Size / 2); ++i)
                  {
                      ushort depth = frameData[i];
                      rawDataConverted[i] = (byte)(depth >= frame.DepthMinReliableDistance && depth <= frame.DepthMaxReliableDistance ? (depth) : 0);
                  }

                  String date = string.Format("{0:hh-mm-ss}", DateTime.Now);
                  String filePath = System.IO.Directory.GetCurrentDirectory() + "/test/" +date+".raw";
                  File.WriteAllBytes(filePath, rawDataConverted);
                  rawDataConverted = null;

              }
          }
      }
    }
 }

你也看看这里: Saving raw detph-data