Kinect入門(2)——顯示深度影象資料流
阿新 • • 發佈:2019-02-10
顯示深度資料流的步驟與顯示彩色影象的步驟基本一樣。所以,這裡就只說原始碼中不一樣的地方。具體原始碼參考顯示彩色影象資料流。
**顯示深度影象與顯示彩色影象原始碼的不同點
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);
}
}
}