當前位置:編程學習大全網 - 源碼下載 - unitykinect技術原理

unitykinect技術原理

1.Kinect原理:

kinect1:Prime Sense公司的Light Coding技術作為原理,給不可見光打碼,然後檢測打碼後的光束,判斷物體的方位。

kinect2:TOF原理(精度、靈敏度和分辨率都更高),根據光反射回來的時間判斷物體的方位,當然檢測光的飛行速度是幾乎不能實現的,所以發射壹道強弱隨時間變化的正弦光束,然後計算其回來的相位差值,所以使用場景盡量避免反射物以及不要移動Kinect,不然會有問題。

2.可供研究開源庫:Openni,KinectSDK,手勢庫NITE,Kinect-ms-sdk。由於我是新手,而且比較熟悉的Kinect的SDK,所以就從這個開始總結,其他的有機會再來詳細分析。

3.首先妳用Kinect,首先要了解它能幹什麽,能獲得哪些數據

其實看他的SDK就知道它能獲取的數據包括:語音,彩色圖像,深度圖像,骨骼數據(這個是根據深度和彩色通過算法識別提供給開發者使用的)。而又這幾種數據又能擴展出什麽新的數據,開發出什麽有趣的功能完全是由開發者們的能力和對世界的好奇。(官方SDK已提供了表情,臉部建模,語音識別,手勢判斷等,其他的估計不會那麽快提供出來)

4.Kinect的使用程序流程:

開始程序-獲取kinect攝像機-打開讀取器-打開Kinect-獲取讀取器的相關幀數據-使用幀數據-關閉幀-關閉讀取器-關閉Kinect-關閉程序

這就是Kinect的壹個完整的工作流程,無論是彩色,深度,骨骼的數據獲取都需要這個流程的,而我們主要操作是在使用幀數據的這個階段。其他基本是不變的。

4.1 kinect的開啟很簡單:在程序開始時,也就是unity的Start函數裏寫下

_Sensor = KinectSensor.GetDefault();

if (_Sensor != null)

{

_Reader = _Sensor.ColorFrameSource.OpenReader();

if (!_Sensor.IsOpen)

{

_Sensor.Open();

}

}

這樣就能成功開啟Kinect傳感器和讀取器了。

4.2 程序的關閉

要註意的是沒獲取完數據不要隨意進行Kinect的關閉操作,不然數據會不準確,壹般kinect的關閉是在妳準備要關閉程序的時候進行的,在unity上的mono類裏有專門的OnApplicationQuit(),在這裏進行關閉kinect的操作。

代碼如下:

void OnApplicationQuit()

{

if (_Reader != null)

{

_Reader.Dispose();

_Reader = null;

}

if (_Sensor != null)

{

if (_Sensor.IsOpen)

{

_Sensor.Close();

}

_Sensor = null;

}

}

中間的數據獲取和數據的使用會占很大的篇幅,會在後續的博客裏壹個個分析

  • 上一篇:重讀甲午戰爭,中國沒有任何機會贏得甲午戰爭嗎?
  • 下一篇:如何看懂壹只股票的異動籌碼分布圖
  • copyright 2024編程學習大全網