作爲一個研究生狗,最近應老闆的要求在學習關於Kinect方面的知識。
其中遇到一個問題就是:學校購入的Kinect是Kinect 2代,而且我所學習的框架必須依賴OpenNI庫,但是Kinect2和OpenNI2在查閱各種資料下,似乎是不兼容的。如圖:
爲了解決這個問題,花費了我許久的時間。不過還好,終於在某外網的問答下找到了答案。
首先,我先報下我的環境:
操作系統:win8.1(Kinect 2需要搭配 kinect for windows SDK 2.0,而SDK2.0需要win8及其以上系統。)
設備:Kinect Xbox One
軟件:Kinect for windows SDK 2.0
OpenNI 2.2
Kinect 2的安裝:
(雖然我的系統是64位,可我覺得32位更方便,以下所有軟件我都是使用的32位版本。)
一、下載並安裝Kinect for windows 2.0(記住,此時Kinect不能連接電腦)。因爲是微軟的比較霸道,不能更改安裝路徑。如果有想知道路徑的朋友,其路徑是C:\Program Files\Microsoft SDKs\Kinect
網上有很多關於Kinect的安裝教程,相信很多同學都看見過SDK1.x+OpenNI+NITE的安裝教程。那是在SDK 2.0之前,如果在windows系統上開發Kinect需要藉助OpenNI和NITE。SDK2.0發佈後,其實一般簡單的程序都有包括。目前Kinect 2代大致有兩種選擇:一、使用SDK;二、使用SDK+OpenNI2。兩者有各自的好,一個是開源,一個比較便利。這就需要自己去選擇啦。
二、連接Kinect(記住一定要用usb3.0接口)。之後電腦會自動安裝Kinect所需的驅動。
此時打開Kinect studio,點擊connected
可以測試電腦是否可以連接Kinect
如果你是隻安裝SDK,到此就安裝成功了,SDK中有很多例子(點擊SDK Browser),可以多看看,使用也很方便。
三、下載並安裝OpenNI2。這裏就不詳細講解了,設置好安裝路徑再一路next就可以了。
安裝完,點擊NiViewer測試是否成功。
成功!
OpenNI2遇到no devices found問題:
如開篇所說,查閱了很多資料都是Kinect 2 與 OpenNI2 不兼容,所以OpenNI識別不了Kinect 2設備。不過,誤打誤撞的我找到了解決方法:
一、下載OpenNI2-Kinect2Driver。點擊Download ZIP,下載到一個你想要的路徑,並解壓。
二、用vs2013運行OpenNI.sln。(關於vs的選擇,它雖然是vs2010編譯的,但是要求vs2012及其以上運行。我用vs2012運行會報錯並且需要改平臺工具集,所以試過之後我建議大家用vs2013。)
三、打開之後,大家會發現它默認的活動解決方案平臺是x64,並不是win32,鑑於上面我們都是用的32位的軟件,所以改爲win32(x86)。如果你需要的是64位不需要改平臺,以下也會順帶講解。
然後點擊生成OpenNI,成功。
右擊Kinect2,點擊屬性->配置屬性->vc++目錄:
配置包含目錄:C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\inc
配置庫目錄:C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x86(32位)
C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x64(64位)
再點擊鏈接器->輸入
配置附加依賴項:Kinect20.lib和XnLib.lib
配置好屬性後,點擊生成Kinect2
如果你的活動解決方案平臺是win32:
在:你選擇解壓的路徑\OpenNI2-kinect2\Bin\Win32-Debug\OpenNI2\Drivers中可以找到Kinect2.dll,Kinect.lib等
如果你的活動解決方案平臺是x64:
將得到的文件複製到:
OpenNI2安裝目錄\OpenNI2\Tools\OpenNI2\Drivers下
運行NiViewer,成功~!
注:1.選擇你32位OpenNI2要對應選擇win32平臺,64位的OpenNI2要選擇對應的x64平臺。
2.使用OpenNI時,記得要把OpenNI2\Redist中的所有內容複製到項目中。
困擾我很久的問題~通過自己的努力解決了~希望大家多多支持~科科~