視頻數據:彩色數據採集(Color Data)

在Kinect for windows上,有三個攝像頭,一個紅外發射攝像頭,一個紅外攝像頭 ,一個普通攝像頭,這篇無博文就是說明關於普通攝像頭採集視頻數據的。另外還有深度數據採集(Depth Data)和骨骼數據(Skeleton Data)採集在後面幾篇博文中進行說明。windows

項目的準備見上一篇博文。
新建一個 WPF項目,在窗體上放一個Image控件,Name爲img。
C#代碼以下:
 
  
  
  
  
  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.  
  11. private void Window_Loaded(object sender, RoutedEventArgs e)  
  12. {  
  13.     foreach (KinectSensor ks in KinectSensor.KinectSensors)  
  14.     {  
  15.         if (ks.Status == KinectStatus.Connected)  
  16.         {  
  17.             kinectsensor = ks;  
  18.             //開啓彩色流,參數爲採集方式,分辨率640x480和採集頻率每秒30幀  
  19.             kinectsensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);  
  20.             //訂閱採集事件  
  21.             kinectsensor.ColorFrameReady += kinectsensor_ColorFrameReady;  
  22.             kinectsensor.Start();//啓動Kinect  
  23.             this.Title = "Kinect開始工做……";  
  24.             return;  
  25.         }  
  26.     }  
  27. }  
  28.  
  29. byte[] colorPixels;//採集數據的字節數組  
  30. WriteableBitmap colorBitmap;//位圖對象  
  31. void kinectsensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)  
  32. {  
  33.     using (ColorImageFrame colorFrame = e.OpenColorImageFrame())  
  34.     {  
  35.         if (colorFrame != null)//判斷彩色數據框架是否有數據  
  36.         {  
  37.             //初始化字節數據長度  
  38.             this.colorPixels = new byte[kinectsensor.ColorStream.FramePixelDataLength];  
  39.             //把數據複製到字節數組中  
  40.             colorFrame.CopyPixelDataTo(colorPixels);  
  41.             //實例化彩色位圖  
  42.             colorBitmap = new WriteableBitmap(kinectsensor.ColorStream.FrameWidth, kinectsensor.ColorStream.FrameHeight, 96.0, 96.0, PixelFormats.Bgr32, null);  
  43.             //加載字節數據數據到位圖中  
  44.             this.colorBitmap.WritePixels(new Int32Rect(0, 0, colorBitmap.PixelWidth, colorBitmap.PixelHeight), colorPixels,colorBitmap.PixelWidth * sizeof(int),0);  
  45.             //把位圖賦給圖片控件,並顯示出來  
  46.             img.Source = colorBitmap;  
  47.         }  
  48.     }  
  49. }  

結果以下:數組

相關文章
相關標籤/搜索