Kinect for Windows SDK開發入門(四)景深資料處理 上

來源:互聯網
上載者:User

Kinect感應器的最主要功能之一就是能夠產生三維資料,通過這些資料我們能夠建立一些很酷的應用。開發Kinect應用程式之前,最好能夠瞭解Kinect的硬體結構。Kinect紅外感應器能夠探測人體以及非人體對象例如椅子或者咖啡杯。有很多商業組織和實驗室正在研究使用景深資料來探測物體。

本文詳細介紹了Kinect紅外感應器,景深資料格式,景深映像的擷取與展示,景深映像的增強處理。

1. Kinect感應器

和許多輸入裝置不一樣,Kinect能夠產生三維資料,它有紅外發射器和網路攝影機。和其他Kinect SDK如OpenNI或者libfreenect等SDK不同,微軟的Kinect SDK沒有提供擷取原始紅外資料流的方法,相反,Kinect SDK從紅外網路攝影機擷取的紅外資料後,對其進行計算處理,然後產生景深影像資料。景深影像資料從DepthImageFrame產生,它由DepthImageStream對象提供。

DepthImageStream的使用和ColorImageStream的使用類似。DepthImageStream和ColorImageStream都繼承自ImageStream。可以像從ColorImageStream擷取資料產生映像那樣產生景深映像。先看看將景深資料展現出來需要的步驟。下面的步驟和前面顯示彩色影像資料相似:

1. 建立一個新的WPF對象。

2. 添加Microsoft.Kinect.dll對象引用。

3. 添加一個Image元素到UI上,將名稱改為DepthImage。

4. 添加必要的發現和釋放KinectSensor對象的代碼。可以參照前面的文章。

5. 修改初始化KinectSensor對象的代碼如下:

private void InitializeKinectSensor(KinectSensor kinectSensor){    if (kinectSensor != null)    {        DepthImageStream depthStream = kinectSensor.DepthStream;        depthStream.Enable();            depthImageBitMap = new WriteableBitmap(depthStream.FrameWidth, depthStream.FrameHeight,  96,96,PixelFormats.Gray16, null);        depthImageBitmapRect = new Int32Rect(0, 0, depthStream.FrameWidth, depthStream.FrameHeight);        depthImageStride = depthStream.FrameWidth * depthStream.FrameBytesPerPixel;            DepthImage.Source = depthImageBitMap;        kinectSensor.DepthFrameReady += kinectSensor_DepthFrameReady;        kinectSensor.Start();    }}

6. 修改DepthFrameReady事件,代碼如下:

void kinectSensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e){    using (DepthImageFrame depthFrame = e.OpenDepthImageFrame())    {        if (depthFrame != null)        {            short[] depthPixelDate = new short[depthFrame.PixelDataLength];            depthFrame.CopyPixelDataTo(depthPixelDate);            depthImageBitMap.WritePixels(depthImageBitmapRect, depthPixelDate, depthImageStride, 0);        }    }}

運行程式,將會看到如下結果,由於一手需要截圖,一手需要站在Kinect前面所以姿勢不是很對,有點挫,不過人物的輪廓還是顯示出來了,在景深資料中,離Kinect越近,顏色越深,越遠,顏色越淡。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.