Kinect入门(2)——显示深度图像数据流

显示深度数据流的步骤与显示彩色图像的步骤基本一样。所以,这里就只说源码中不一样的地方。具体源码参考显示彩色图像数据流。

**显示深度图像与显示彩色图像源码的不同点

1、在上一篇的“3、在WPF里添加必要的属性和元素.”中,把

<Image Name="ColorName" Height="480" Width="640"/>  

中的”ColorName”——>”DepthName”。

其实不改也行,只是这样更直观

2、在上一篇的“4、源码解读”中,把第34行的:

 private byte[] colorPixelData;//存储彩色数据流中的像素数据

改为:

 private short[] depthPixelData;//存储深度数据流中的像素数据

3、在上一篇的“4、源码解读”中,把第43和45行的:

kinectSensor.ColorStream.Enable(ColorImageFormat.RgbResolution1280x960Fps12);
kinectSensor.ColorFrameReady += kinectSensor_ColorFrameReady;

分别改为:

kinectSensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);
kinectSensor.DepthFrameReady += kinectSensor_DepthFrameReady;

4、在上一篇的“4、源码解读”中,把第51~66行改为:

        void kinectSensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
        {
            using (DepthImageFrame depthImageFrame = e.OpenDepthImageFrame())
            {
                if (depthImageFrame != null)
                {
                    //1、用来存储彩色像素的数组(BGRA BGRA BGRA BGRA BGRA)
                    depthPixelData = new short[depthImageFrame.PixelDataLength];
                    //2、把彩色数据帧中的彩色像素复制到:colorPixelData
                    depthImageFrame.CopyPixelDataTo(depthPixelData);
                    //3、将彩色像素数据赋给画布上Name=ColorName的Image元素
                    ColorName.Source = BitmapSource.Create(depthImageFrame.Width, depthImageFrame.Height, 96, 96,
                                      PixelFormats.Gray16, null, depthPixelData, depthImageFrame.Width * 2);
                }
            }
        }

到此,就OK了,其他的不用改动!

运行结果如下图所示:

Kinect入门(2)——显示深度图像数据流_第1张图片

你可能感兴趣的:(kinect)