1. 程式人生 > >Kinect入門(2)——顯示深度影象資料流

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顯示深度影象