1. 程式人生 > >從零開始學習Kinect程式設計(一) 4.20

從零開始學習Kinect程式設計(一) 4.20

今天是第一天開始學習Kinect 之前並沒有接觸過這個東西
1,Kinect是什麼?–百度找的 =.=
Kinectfor Xbox 360,簡稱 Kinect,是由微軟開發,應用於Xbox 360 主機的周邊裝置。它讓玩家不需要手持或踩踏控制器,而是使用語音指令或手勢來操作 Xbox360 的系統介面。它也能捕捉玩家全身上下的動作,用身體來進行遊戲,帶給玩家“免控制器的遊戲與娛樂體驗”。其在2010年11月4日於美國上市,建議售價149美金。Kinect在銷售前60天內,賣出八百萬部,目前已經申請金氏世界記錄,成為全世界銷售最快的消費性電子產品。
2012年2月1日,微軟正式釋出面向Windows系統的Kinect版本“Kinect for Windows”,建議售價249美金。而在2012年晚些時候,微軟還將釋出面向“教育使用者”的特別版Kinect。(以上來自wiki百科)

2,Kinect的的構成
Kinect有三個鏡頭,中間的鏡頭是 RGB 彩色攝影機,用來採集彩色影象。左右兩邊鏡頭則分別為紅外線發射器和紅外線CMOS 攝影機所構成的3D結構光深度感應器,用來採集深度資料(場景中物體到攝像頭的距離)。彩色攝像頭最大支援1280*960解析度成像,紅外攝像頭最大支援640*480成像。Kinect還搭配了追焦技術,底座馬達會隨著對焦物體移動跟著轉動。Kinect也內建陣列式麥克風,由四個麥克風同時收音,比對後消除雜音,並通過其採集聲音進行語音識別和聲源定位。
從這一篇拆解kinect的文章可以看到裡面的具體構造和硬體構成文章地址——>

微軟黑科技Kinect拆解

3,Kinect工作原理
Kinect一次可擷取三種東西,分別是彩色影像、3D深度影像、以及聲音訊號。首先是Kinect機身上有3顆鏡頭,中間的鏡頭是一般常見的RGB彩色攝影機,左右兩邊鏡頭則分別為紅外線發射器和紅外線CMOS攝影機所構成的3D深度感應器,Kinect主要就是靠3D深度感應器偵測玩家的動作。Kinect中間的鏡頭是攝影機、左右兩顆鏡頭則是3D深度感應器;同時具有追焦功能,底座馬達可左右旋轉27度。此外還有陣列式麥克風。中間視訊鏡頭則是用來辨識玩家身分(靠著人臉辨識和身體特徵)、以及辨識基本的臉部表情,此外也能應用在擴增實境遊戲、以及視訊通話時;同時Kinect還搭配了追焦技術,底座馬達會隨著對焦物體移動跟著轉動。Kinect也內建了麥克風系統,用的還是陣列式麥克風。它的好處是藉由多組麥克風同時收音,比對後消除掉雜音,等於提供了降噪功能,讓玩家的聲音能更清楚的傳遞出去。
Kinect就是以紅外線發出人眼看不見的class1雷射光,透過鏡頭前的diffuser(光柵、擴散片)將雷射光均勻分佈投射在測量空間中,再透過紅外線攝影機記錄下空間中的每個散斑,擷取原始資料後,再透過晶片計算成具有3D深度的影象。

4.實際應用限制
Kinect偵測的最佳距離為1.2公尺到3.5公尺間,水平視野則是57度,偵測範圍似乎比原本想像的還要小,看來還是不能站的太隨意;Kinec也配備了追焦系統,如果玩家超出影像範圍,底座馬達可驅動Kinect左右旋轉27度。整體看來Kinect對操作空間的限制,似乎比其他體感裝置更嚴格些

開發環境
我自己只會一些簡單的C,C++,opencv基礎網上看了有一部分人說有非官方組合 和 官方組合

非官方組合
1)CL NUI Platform
由NUI的大牛AlexP開發(他開發的其他著名產品包括PS3的windows驅動),可以到這裡下載,目標平臺是windows7,能夠獲取彩色攝像頭,深度感測器以及加速度感測器資料,使用簡單方便。

2)OpenKinect/libfreenect
由號稱第一個破解Kinect的Hector Martin發起,可以到這裡下載,目標平臺是Linux and Mac,據說有人成功移植到了windows上。因為很多geek都是Mac的擁躉,所以開發參與者眾多,不僅僅是個可以獲得資料的driver,geek們還寫了其他高階的東西,比如我前面提到的骨骼化,將彩色攝像頭作為紋理貼在深度資料上等等,很吸引人啊。

3)OpenNI
OpenNI(opennatural interface開放自然互動)是一個多語言,跨平臺的框架,它定義了編寫應用程式,並利用其自然互動的API。可以到這裡下載。從名字判斷其終極目標大約是實現少數派報告的效果,從目前放出來的一些demo,恐怕已經超越了這個終極目標。它不是專為Kinect開發,但有Kinect的生產商PrimeSense的支援。這個感覺也是目前相對來說用的比較多的非官方組合:SensorKinect + NITE + OpenNI;其中SensorKinect是Kinect的驅動。NITE是PrimeSense提供的中介軟體,可以分析Kinect讀取的資料,輸出人體動作等等。

官方環境
微軟官方SDK
Kinect體感遊戲在Xbox 360 上獲得很好的評價,但是對於 Windows 平臺上的開發卻一直只能使用非官方的解決方案(上面所說),例如NKinect 配合CL NUI SDK;但是微軟終於在2011 年 6 月推出了 Kinect forWindows SDK Beta,特別是可以使用 C# 與.NETFramework 4.0 來進行開發。Kinect for Windows SDK主要是針對Windows7設計,內含驅動程式、豐富的原始感測資料流程式開發介面、自然使用者介面、安裝檔案以及參考例程。Kinect for Windows SDK可讓使用C++、C#或VisualBasiC語言搭配MicrosoftVisualStudio2010工具的程式設計師輕易開發使用。目前最新是V2.0 。

我的開發環境 電腦上安裝了win10 ,opencv3.0 ,vs2015 ,.NET4.0 ,
先去微軟官網找kinect的sdk
我先找了kinect for windows skd v2.0 發現根本不行再安裝完之後並不能自動安裝驅動顯示無法連線到kinect 顯示未連線kinect 找了半天他們說是需要usb3.0介面 或者是換成1.8版本