一年多前,Heresy 有寫了一篇《在 WIndows 上安裝 Kinect(含 MMD 使用 Kinect 簡易教學)》,算是在當時針對第一個版本的 OpenNI、NITE,以及 Microsoft Kinect 的安裝做教學。
不過到現在,OpenNI 的版本已經從 1.0.x 進版到 1.5.x 了,在模組、路徑上,其實都有相當程度的變更。雖然後來也有更新過一次(參考),不過可能還是不夠新,所以現在再來針對現在的最新版本,來寫一個比較完整的吧。
Windows 環境安裝 OpenNI
首先,先針對一般在 Windows 上,只需要到 OpenNI 官方網站(連結),在網站的上方有「Downloads」的字樣,把滑鼠游標移過去會出現選單(下圖紅色的圈),點選選單裡的「OpenNI Modules」、就可以進入下載頁面了(頁面)。
在下載頁面裡,「Select downloads option」(選取下載選項)下面有三個下拉選單,需要依序選取(右圖)。
在這邊的前兩個欄位、依序選取「OpenNI Package」、「Stable」,這樣第三個欄位就會有給 Windows 的安裝套件可以選了。
一般使用者
對於只是想跑有用到 OpenNI 程式(例如 MMD)、但是沒有要進行程式開發的人來說,如果是 32 位元的 Windows 作業系統的話,就請選取「PrimeSense Package Stable Build for Windows x86 (32-bit) v20.4.2.20 Redist Edition」(版本編號可能會因為時間而有所變化);選好之後,按下方的「Download」按鈕,就可以進行下載了。下載之後,請執行這個安裝檔,並一直按「Next」,這樣就會把 OpenNI 和 NITE 必要的檔案都安裝完成了。
而如果是使用 64 位元的 WIndows 的話,則建議請下載「PrimeSense Package Stable Build for Windows x64 (64-bit) v20.4.2.20 Redist Edition」這個版本;他會同時安裝 32 位元和 64 位元的版本,這樣遇到 32 位元或 64 位元的程式,都可以使用。
程式開發者
而如果是要進行 OpenNI 程式開發的話,則不能使用「Redist Edition」,要使用「Development Edition」。「Development edition」和「Redist edition」的不同,在於「Redist edition」是給一般用戶用的,只包含了執行 OpenNI 時必要性的檔案;而「Development edition」則是給開發人員用的,檔案比較大,除了必要的內部元件外,還包含了開發程式需要的檔案、文件、以及範例等等東西。而由於「Development edition」包含了「Redist edition」的所有檔案,所以如果有安裝「Development edition」的話,就不用額外安裝「Redist edition」了。
而和 Redist Edition 版本一樣,如果是使用 32 位元的作業系統的話,就請選擇 32 位元的「PrimeSense Package Stable Build for Windows x86 (32-bit) v20.4.2.20 Development Edition」;而如果是使用 64 位元 Windows 作業系統的話,則建議請選擇 64 位元用的「PrimeSense Package Stable Build for Windows x64 (64-bit) v20.4.2.20 Development Edition」、同時安裝 32 位元和 64 位元的版本。
硬體安裝
ASUS Xtion PRo 系列
如果是使用 ASUS Xtion Pro 系列的產品的話,由於他是 OpenNI 官方相容的硬體,所以理論上直接把 Xtion Pro 接到 USB 上,就可以抓到驅動程式並且使用了!在安裝完驅動程式後,在裝置管理員裡面,應該可以看到「PrimeSense」的類別下,有一個「PrimeSense PS1080」(如右圖),這就代表有這卻抓到硬體了!
而如果系統沒有自動抓到驅動程式、而需要手動指定驅動程式所在位置的話,OpenNI 所提供的驅動程式預設是會在「C:\Program Files\OpenNI\Driver」,理論上應該只要指定這個資料夾,Windows 就可以找到對應的驅動程式了。
Microsoft Kinect for Xbox360
不過如果是使用 Microsoft Kinect for Xbox 360 的話,官方的驅動程式並不能直接支援,還需要另外去安裝修改過的驅動程式!目前一般都是使用 avin2 這位網友所修改出來的「SensorKinect」模組,他的網頁是:
在這個頁面裡面,點選「Bin」後,就可以看到已經編譯、封包完成的 SensorKinect 硬體模組的安裝檔(頁面);而如果是一般使用的 32 位元的話,就是點選「SensorKinect091-Bin-Win32-v5.1.0.25.msi」進入頁面下載,64 為原則就是點選「SensorKinect091-Bin-Win64-v5.1.0.25.msi」(一樣,版本編號可能會變化)來下載。
不過不熟系 github 的人可能點進去了也不知道要怎麼下載,所以這邊再補充一下,在 github 進入單一檔案的頁面後,在右下方會有「RAW」和「History」兩個按鈕,這時候只要按下「RAW」就可以下載檔案了!(下圖紅色圈的部分)
而下載後,執行下載完成的安裝檔,就可以安裝 Kinect 專用的 OpenNI 硬體模組以及驅動程式了。不過要注意的是,由於硬體模組需要有 OpenNI 的平台才能安裝,所以請先安裝好 OpenNI 的環境再來安裝 SensorKinect,這樣才不會出問題。
都裝好後,接上 Kinect 後,理論上就會抓到三個硬體;在裝置管理員裡,在「PrimeSense」的類別下,會有三個裝置:「Kinect Audio」、「Kinect Camera」、「Kinect Motor」。如果都有抓到的話,就代表硬體都安裝成功了。
而如果沒有自動找到驅動程式的話,可以手動去指定驅動程式所在的路徑,預設是會在:「C:\Program Files\PrimeSense\SensorKinect\Driver」。
不過另外要注意的是,目前 SensorKinect 應該無法使用在新的 Kinect for Windows 硬體上的,可能要等新版的驅動程式會不會對此做修改了。
測試
理論上,OpenNI 環境裝好、硬體也抓到了,要使用 OpenNI 感應器的環境應該就已經就緒了~而接下來,就是要執行 OpenNI 的程式、來做測試了!如果是安裝「Development edition」的話,在程式集裡面應該可以找到一個「NiViewer」的官方範例,可以用來做測試之用。
他執行起來應該會是全螢幕、像下面這樣子:
左上方黃色的部分就是深度影像、右上方就是彩色影像了。基本的操作,包括了:按「Esc」可以離開程式、「f」可以在全螢幕和視窗模式間做切換,滑鼠右鍵可以叫出進一步控制的選單。
如果是安裝「Redist edition」的話,則沒有這個官方範例可以做測試,所以就只能看要用什麼程式,直接拿它來做測試了。
如果無法正常使用的話,可能要注意的有幾點:
-
OpenNI 程式的架構應該會呼叫一個 XnSensorServer 的程序,並且透過電腦內部的連線來取得裝置的資料;所以如果有安裝軟體防火牆的話,可能要注意一下相關的設定,以避免因為內部的連線被防火牆擋掉,而無法正常使用。
-
Microsoft Kinect for Xbox 360 基本上比較挑 USB port,所以有可能會差上去沒反應、或無法正常使用;如果遇到不明問題,建議先換接到別的 USB Port 上試試看。同時,也建議不要透過 USB Hub、而是直接接到主機板的 USB port 上。
-
官方的硬體模組/驅動程式可以和 avin2 的 SensorKinect 同時安裝不會有問題,但是 ASUS Xtion Pro 和 Kinect for Xbox 360 無法同時使用,驅動程式會衝突,後面接上去的裝置會錯誤。
-
NiViewer 等官方範例基本上都是用 OpenGL 來做顯示的,如果顯示卡驅動程式沒有正確安裝的話,可能會無法正確顯示;如果遇到城市可以執行,但是沒有正確的畫面的話,建議檢查一下顯示卡驅動程式是否有正確安裝。
-
如果是 Direct 3D 的程式、遇到缺少 d3d9_24 dll 這類的檔案的話,請至微軟網站下載 Direct X 線上安裝程式進行更新。
一些細節
前面基本上是先根據下載、安裝的部分,直接做說明;接下來,來講一些細節的部分。
首先,OpenNI 的環境主要包括三個部分:OpenNI 本身的框架、分析演算法的 Middleware、以及硬體模組;基本上,應該是這三種東西都安裝好了,才算把整個 OpenNI 環境建立完成。下方就是這三者的簡易說明:
OpenNI 本身的框架
由 OpenNI.org 提供的 OpenSource 軟體,可以在 github 上找到他的原始碼(連結);不過對一般人來說,應該都是下載 OpenNI.org 提供、已經編譯好的 binary 就可以了。他基本上是 OpenNI 的平台,所有程式都是透過這個框架、來對裝置、middleware 做存取、控制的。
要注意的是,安裝的時候,OpenNI 一定是要最先安裝、最晚移除的,這樣才能新增、移除其他的 middleware 和硬體模組。另外實際上,安裝 OpenNI 的同時應該就已經安裝了公版的驅動程式了。
分析演算法的 Middleware
OpenNI 的框架本身算是空的,像是人體骨架分析、手勢辨識等這些功能都只有設計一個介面在那、並沒有實作;而要真的能用這些分析功能,就必須要額外安裝這些演算法的 Middleware。
目前基本上都是安裝 PrimeSense 所提供的 NITE,他裡面包含了目前所需要的各種分析的演算法,不過他不是 OpenSource 的,所以沒有原始碼可以看、只能下載編譯好的 binary。如果之後有其他的 Middleware 的話,也可以安裝其他 Middleware 來使用。
硬體模組
對應不同的 OpenNI 相容硬體所需要的模組,要有安裝這個模組,OpenNI 才能對對應的硬體進行控制。
目前的硬體不管是 Microsoft Kinect 還是 Asus 的 Xtion Pro 系列,都是使用 PrimeSense 的感應器;而 PrimeSense 官方有針對由自家的感應器放出公版的驅動程式及 OpenNI 硬體模組的原始碼(連結)。
和 OpenNI 一樣,一般人應該都不需要去使用原始碼,而可以直接使用官方提供、編譯好的 binary 就可以了。不過要注意的是,公版驅動程式和感應器模組並不適用於 Microsoft Kinect!如果要使用 Microsoft Kinect 的話,是需要使用修改過的版本的。
而在前面「Windows 環境安裝 OpenNI」的部分所使用的「OpenNI Package」的安裝檔,實際上是把這三樣東西都包在一起,方便使用者安裝而已~在早期,其實都是要分別下載安裝的。實際上,目前官方下載頁面裡,也都還有提供原始碼下載(頁面)、以及上述三者的檔案各自下載的功能。
在下載頁面裡,「Select downloads option」下面有三個下拉選單,第一層選單就是用來選要下載哪類的東西的,它包含了五種選項:
- OpenNI Binaries
- OpenNI Compliant Middleware Binaries
(OpenNI 相容 Middleware) - OpenNI Compliant Hardware Binaries
(OpenNI 相容硬體) - OpenNI Packages
- ONI files
前面在這邊所選的,就是整個包裝好的「OpenNI Package」;而要獨立下載的話,則就是前面三項了!至於最後一項「ONI files」,則是提供了官方錄好的深度、彩色資料,算是用來做測試資料用的,基本上一般都用不到。
而在這邊選取前四項的話,第二層的選單都會出現「stable」和「unstable」的選項。
Stable 是穩定版、通常版本比較舊、但是經過比較多的測試、會比較穩;unstable 是不穩定的版本,但是會比較新、功能可能比較多。某方面來說,可以把 stable 版看成正式版、把 unstable 版看成測試(Beta)版,這樣應該比較容易理解。至於要用 stable 版還是 unstable 版?就看需求了。以開發來說,Heresy 會建議用最新的 unstable 版就是了。(不過像在這個時間點,其實兩者的版本是相同的)
接下來,最後一層會列出來不同平台、不同版本的檔案,這時候就是要針對自己的平台和需求做選取了。在這邊,他主要會有不同作業系統,包含是哪種作業系統、32 / 64 位元的版本。一般使用者基本上都是使用「for Windows」、「32-bit」的版本,應該就都可以了~
不過這邊要注意的是,個別下載安裝檔的話, 64 位元的版本並不會像 Packages 的版本一樣、直接包含 32 位元的版本,所以如果是要同時安裝 32 位元和 64 位元的版本,是需要兩者個別安裝的。
而「Development Edition」和「Redist Edition」之間的選擇,前者就是「程式開發版」,後者則是「可轉發套件版」(Redistributable),則是如同在「Windows 環境安裝 OpenNI」所說的,是要開發程式的人再選擇「Development Edition」應該就可以了。不過要注意的是,「Redist Edition」裡面不包含任何 OpenNI 的程式,所以也沒有辦法使用官方範例(NiViewer)來進行測試。
[…] 2012 OPENNI 環境/KINECT 安裝教學 強制更換 KINECT 的驅動程式(FOR OPENNI) 在 WINDOWS 上安裝 KINECT(含 MMD 使用 KINECT 簡易教學) […]
讚讚
請問openNi官網關掉了!我還可以去哪裡下載OpenNI Modules下面的東西呢?感激不盡!謝謝!
讚讚
OpenNI 1 的相關檔案目前應該都已經幾乎沒了。
讚讚
謝謝你!我的kinect 是 xbox 360,我還可以用甚麼來開發呢?謝謝!
讚讚
以現況來看,個人會建議使用 Kinect for Windows SDK。
不然,OpenNI 2 還有人接手、NiTE 2 網路上也還找的到。
讚讚
好的!謝謝你!
讚讚
我使用的系列是ASUS Xtion PRO Live
安裝環境是OpenNI version 1.5.2.23
Sensor version 5.1.0.41
NITE version 1.5.2.21
請問我在執行NIViewer後,錄製出來有影像可是沒有聲音,我的device一直抓不到audio node,我從Device→Audio→on/off出現
One or more of the following nodes could not be enumerated:
Audio:PrimeSense/SensorV2/5.1.0.41:Can’t create any node of the requested type
請問到底是哪裡出問題呢?
讚讚
新生產、或是更新過韌體的 Xtion,他的音訊裝置應該都變成標準 USB Audio 裝置了。
參考: https://kheresy.wordpress.com/2013/04/26/firmware-update-for-asus-xtion/
在這個情況下,他是無法支援 OpenNI 1 的音訊讀取的。
讚讚
可是我並沒有更新過它的韌體,我是直接安裝AUSU Xtion PRO Live附贈的光碟片
讚讚
比較晚買的 Xtion Pro Live 可能已經搭載新的韌體了
讚讚
我有試著用OpenNI2的NIViewer錄看看,可是錄下來沒聲音,請問我要怎麼用NIViewer將聲音錄製進去?我打開NIViewer在Device下沒看到audio的選項,OpenNI2好像把audio給拿掉了。
讚讚
如同前面所說的,韌體更新後,他的麥克風會被視為 UAC;而 OpenNI 2 並沒有提供任何和音訊有關的介面,所以並不能和 ONI 檔一起錄下來。
如果要錄音的話,可以找一般的錄音軟體來處理,WIndows 是可以直接抓到他的麥克風的。
讚讚
謝謝 我大概了解了!!
讚讚
[…] 所需要的檔案包括了:OpenNI SDK v1.5.4.0、OpenNI-Compliant Sensor Driver v5.1.2.1、NiTE v1.5.2.21,安裝的教學則可以參考《2012 OpenNI 環境/Kinect 安裝教學》。 […]
讚讚
請問一下~~
進行開始進行互動技術的學習,所以正在尋找一些可以應用的資源。
根據版主所提供的OpenNI 下載頁面似乎已經更新了,似乎找不到開發者城市下載頁面,只有新版的SDK下載頁面,請問我該如何取得開發套件呢?
讚讚
目前 OpenNI 已經改版到 2.0 了。
建議請參考 OpenNI 2 的教學,以新的介面來做開發
https://kheresy.wordpress.com/2012/12/21/basic-openni-2/
如果真的需要 1.x 的檔案的話,官方也有提供
http://www.openni.org/openni-sdk/openni-sdk-history-2/
讚讚
了解~~
小弟會深入了解的~~
明天我的KINECT FOR WINDOWS就要到貨了~~
不過看比較新的資料~~
好像透過WINDOWS自家的SDK去開發會比較容易~~
讚讚
如果是要使用 Kinect 感應器,而且只打算在 Windows 上使用,Kinect for Windows SDK 的完成度的確比較高。
不過如果論難易度,OpenNI 2 其實也簡化很多了。
讚讚
了解~~
基本上Windows SDK也有相關書籍!!
我相會針對資源比較容易取得的Windows SDK開頭!!
OpenNI簡化但自行定義的項目比較多,我想先熟悉再深入吧~~
讚讚
那三個軟體已經下載好了,再來還要做甚麼?打程式嗎?\
讚讚
這是看你要幹嘛了吧?如果是要跑現成的程式,例如 FAAST 或 MMD 的話,如果有正確安裝,應該就可以執行了。
如果是要自己寫 OpenNI 1.x 的程式,請參考
https://kheresy.wordpress.com/index_of_openni_and_kinect/documents-of-openni-1-x/
讚讚