視頻數據:深度數據採集(Depth Data)

深度數據是利用紅外發射攝像頭髮射紅外線,用紅外接收攝像頭接收紅外線而造成的圖像,在利用發射接收差來計算深度距離,從抓取的圖像中咱們能夠看出,紅外圖像是有遠近梯度的。數組

新建一個WPF項目,在窗體中添加一個Image控件,Name爲img。

後臺代碼以下:ide

  
  
  
  
  1. //Kinect對象  
  2. KinectSensor kinectsensor = null;  
  3. private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)  
  4. {  
  5.     if (kinectsensor.Status == KinectStatus.Connected)  
  6.     {  
  7.         kinectsensor.Stop();//中止Kinect  
  8.     }  
  9. }  
  10. private void Window_Loaded(object sender, RoutedEventArgs e)  
  11. {  
  12.     foreach (KinectSensor ks in KinectSensor.KinectSensors)  
  13.     {  
  14.         if (ks.Status == KinectStatus.Connected)  
  15.         {                      
  16.             kinectsensor = ks;  
  17.             //設置深度數據流採集參數  
  18.             kinectsensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30);  
  19.             //訂閱深度數據流採集事件  
  20.             kinectsensor.DepthFrameReady += kinectsensor_DepthFrameReady;  
  21.             kinectsensor.Start();//啓動Kinect  
  22.             this.Title = "Kinect開始工做……";  
  23.             return;  
  24.         }  
  25.     }  
  26. }  
  27. private DepthImagePixel[] depthPixels;//定義字節數組  
  28. private WriteableBitmap DepthBitmap;//定義位圖  
  29. void kinectsensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)  
  30. {              
  31.     using (DepthImageFrame depframe = e.OpenDepthImageFrame())  
  32.     {  
  33.         if (depframe != null)  
  34.         {  
  35.             //初始化字節數組  
  36.             depthPixels = new DepthImagePixel[kinectsensor.DepthStream.FramePixelDataLength];  
  37.             //把深度數據複製到數組中  
  38.             depframe.CopyDepthImagePixelDataTo(depthPixels);  
  39.             //實例化位圖對象  
  40.             this.DepthBitmap = new WriteableBitmap(kinectsensor.DepthStream.FrameWidth, kinectsensor.DepthStream.FrameHeight, 96.0, 96.0, PixelFormats.Bgr32, null);  
  41.             //用字節數組數據繪位圖  
  42.             this.DepthBitmap.WritePixels(new Int32Rect(0, 0, DepthBitmap.PixelWidth, DepthBitmap.PixelHeight), depthPixels, DepthBitmap.PixelWidth * sizeof(int), 0);  
  43.             //顯示位圖到圖片控件上  
  44.             img.Source = DepthBitmap;  
  45.         }  
  46.     }  
  47. }  

效果以下圖:this

相關文章
相關標籤/搜索