這篇的主題,是要開始學 Kinect、或是 OpenNI 程式開發前,應該要知道的一些事情;基本上,主要的目的,是壤還搞不清楚狀況的人,知道自己可以使用哪個開發環境,還有該開發環境的狀況。
其實之前都寫在各個文章裡面了,不過由於不時還是有人會弄錯、或是不知道某些東西,所以這邊彙整一下。
基本上,要選擇體感程式、深度感應器的開發環境,主要要取決於你用的是哪個感應器;根據所使用的感應器的不同,能使用的開發環境自然也就不同了。
所以接下來,這邊就是以硬體為導向,開始分類。首先,下面是以表格形式的彙整:
感應器
|
ASUS Xtion 與其他 PrimeSene 架構感應器
|
第一代 Kinect
|
第二代 Kinect
|
---|---|---|---|
OpenNI 1
|
可使用
|
可使用
|
不可使用
|
OpenNI 2
|
可使用
|
可使用
|
不建議使用
|
Kinect for Windows v1
|
不可使用
|
可使用
|
不可使用
|
Kinect for Windows v2
|
不可使用
|
不可使用
|
可使用
|
不過 這邊也要說明一下,Heresy 這邊考慮的基本上只有 OpenNI 和 Kinect for Windows SDK 而已,OpenKinect 等其他開發環境 Heresy 沒有列入這篇的整理。
不過,如果是要使用 OpenNI 的方案的話,也請先參考《201407、OpenNI 現況》,了解他目前的狀況。
下面則是細節:
Microsoft Kinect 感應器
微軟的 Kinect 感應器有兩個不同的世代,以搭配的遊戲機來看的話,第一個世代的 Kinect 是給 Xbox 360 用的,而第二個世代的 Kinect 是給 Xbox One 用的;如果使用的是 Kinect 感應器的話,最需要注意的是:這兩個世代的感應器不但外觀不同,內部架構也不同,兩者之間是完全不能相容的!要下載安裝 SDK 之前、請先確認版本!
第一代 Microsoft Kinect
第一代的 Kinect 外觀如下圖,基本上算是這個世代的深度感應器裡最早出來的產品。
他使用的是 PrimeSense 的 Light Coding 的方案,在硬體上有分為「Kinect for xbox 360」和「Kinect for Windows」兩種;前者是給 xbox 360 用的,給 PC 用算是附加功能,後者則是給 PC 用的,不能搭配 xbox 360 使用。兩者在外觀上差異極小,內部也僅有韌體有所不同。目前基本上應該已經買不到新品了。
而如果所使用的感應器是第一代的 Kinect 的話,那可以使用的開發環境算是最多的,包括了:
- OpenNI 1:
- 很早期的開發環境,不是很建議。
- 跨平台。
- 要使用第三方的驅動程式模組(參考),和 Kinect for Windows SDK v1 是互斥的、不能同時使用。
- OpenNI 2:
- 需要搭配 Kinect for Windows SDK v1 使用,所以僅能在 Windows 7 以後的平台運作。
- 在非 Windows 環境下可以搭配 OpenNI2-FreenectDriver(連結)使用。
- Kinect for Windows SDK 1:
- 僅能在 Windows 7 以後的平台運作。
- Heresy 沒用過。
要注意的是,第一代的 Kinect 感應器,不能搭配 Kinect for Windows SDK 2 使用!所以如果你想要搭配微軟的 Kinect for Windows SDK 使用的話,請下載最後的 1.8 版,不要下載 2.x 版!
第二代 Microsoft Kinect
第二代的 Kinect 外觀如下,他算是目前市面上可能算是最好買到的深度感應器了。
他不再採用 PrimeSense 的方案,而是使用自己的 Time of Flight 技術。他基本上也有兩個版本,第一個版本是「Windows 專用的」,第二個版本則是「Xbox One 用的 + 專用轉接線」,不過兩者基本上相同,外觀差異也極小。目前微軟已經不再販售 Windows 專用版,而僅販售 Xbox One 的版本以及對應的轉接線(參考)。
Kinect for Windows SDK v2
第二代 Kinect 可以使用的開發環境,主要就是 Kinect for Windows SDK v2。
要使用的話最需要注意的,就是他一定要使用特定的 USB 3.0 控制器,也只能搭配 Windows 8 以後的作業系統使用;此外,他也不能搭配 Kinect for Windows SDK 1.x 使用。
OpenNI 2
ASUS Xtion 系列感應器以及其他 PrimeSense 感應器
如果是使用 ASUS Xtion 系列感應器以及 PrimeSense CARMINE、Capri 感應器等其他 PrimeSense 晶片的感應器的話,基本上只能使用 OpenNI 的方案。
理論上,要使用 OpenNI 1 或 OpenNI 2 都可以,不過個人比較建議使用 OpenNI 2。
不過目前最大的問題,還是在於 PrimeSense NiTE 已經沒有維護、也沒有提供下載了,雖然網路上還找的到有人有備份,但是基本上都算是違反使用授權的;所以如果要拿來做人體骨架追蹤與分析,會比較麻煩。這部分還請參考《201407、OpenNI 現況》。
老师您好,我想向您请教Kinect v2和Kinect v1识别骨骼的算法原理是否相同呢?我的意思是不是都基于论文《Real-Time Human Pose Recognition in Parts from Single Depth Images》里提到的先采集深度图像然后划分身体部分最后用决策树训练呢?
讚讚
微軟並沒有完全公開 Kinect for Windows SDK 的內容,所以無法確實知道他的實作。
但是兩個世代基本上都是透過深度影像產生的,不過至少從 v2 的關節點有增加來看,兩代的演算法應該不完全相通。
讚讚
您好
我想向您請教一個問題
我有利用您前幾章的介紹
成功用cpp檔開啟ASUS Xtion Pro的鏡頭畫面
但因為我需要利用vb檔操作surf的影像搜尋
想請問您是否有方法或是相關資訊
可以將openni在vb檔上操作呢???
十分感謝您!
讚讚
你是指 Visual Basic 嗎?
如果是 VB.Net 的話,應該是有 wrapper 可以用。
https://kheresy.wordpress.com/2013/02/18/openni-2-net-wrapper/
讚讚
[…] OpenNI / Kinect […]
讚讚
Hello
謝謝你的介紹
目前想要用Xbox360 Kinect 在 Windows 7 上, 然後用 OpenNI
請問需要安裝一些什麼? 然後用什麼版本的?
我看了你的
https://kheresy.wordpress.com/2014/07/04/201407%e3%80%81openni-%e7%8f%be%e6%b3%81/
可是我的電腦找不到Kinect 所以因該是少安裝了什麼
或是裝錯了
感謝
讚讚
建議請先說明你目前裝了什麼,是怎樣找不到?
不過,如果你是要使用 OpenNI 2 的話,請安裝:
Kinect for Windows SDK 1.8
OpenNI 2.x
讚讚
Hello
喔喔可能是我沒裝SDK 的問題
後來我找到舊版的 OpenNI , Nite
裝了好幾次不同版本的…也不知道在裝什麼
然後用(OpenNI 1.4, Nite 1.5)可以開Kinect了!!!
可以開SimpleViewer, 有影像
可是的一直不跑不了SimpleSkeleton 啟動他都不跑
SDK 的問題嗎?
後來我想去看 cpp 檔 跑跑看
卻告訴我說 我的 Visual Basic 太新了.. 不能跑 OpenNI 的 code!?
有什麼建議嗎? 這是Skeleton tracking完全不能用的意思?
我之後想裝在Ubuntuu上所以是不是不可以用Windows SDK ?
很感謝你的回應
讚讚
重讀了一遍你的文章
看來好像沒辦法用 Nite了
不知道找不找得到ubuntuu 可以用的 QQ
你說的 OpenNI2-FreenectDriver 等於是 Windows 的 OpenNI + SensorKinect 對吧?
讚讚
個人建議,先把文章認真看完,然後考慮一下你要學哪個版本,再去看該版本的文章。
針對 OpenNI 1 和 OpenNI 2,Heresy 都有寫完整的教學。
另外,他的範例是 C++ 的,和 Visual Basic 沒關係。建議你確認一下你安裝的 VisualStudio 是什麼版本,有沒有裝到 C++ 的部分。
讚讚
Hello
可能沒看到OpenNI 1 + OpenNI 2 的教學
我再看看
我很確定OpenNI 1 不能用 2015 Visual Studio (新名 Community) 來 Compile.
其實是某個 Code 裡面的一個設定. 不知道為什麼有. 可以刪掉那一行可是有點怕所以沒試.
Windows的安裝已全刪所以沒辦法再確認.
目前Ubuntu 裝上舊板 OpenNI 1, SensorKinect, Libfreekinect, Nite 看起來是可以用
我再看看你哪裡有寫Ubuntu + OpenNI 2 在考慮要不要換
謝謝
讚讚
Heresy 沒有寫 Linux 版的教學,建議請參考 Libfreekinect 的官方說明。
讚讚
Heresy你好,
你內文最後有提到NiTE在被收購的同時, 網上散佈的程式就已經是違法的了
那請問還能繼續使用NiTE做學術性的研究嗎?
因為照這樣感覺是不是取得就已經違反授權了?
感謝解答~
讚讚
如果有疑慮的話,建議直接參考 NiTE 的授權文件,並以此為基準,這樣才是最準確的。
不過,在不可散布的部分,是因為 PrimeSense NiTE 在授權文件中,很明確地寫了「You shall not distribute the NITE in any manner」,所以才會說不可自行散佈。
而在 PrimeSense 關閉前,Heresy 也有特別詢問過這件事,當時官方的說法,就是可以繼續使用、但是不可自行散佈。
讚讚
想請問一下kinect v2,我在ubuntu環境想使用kinect,那麼 libfreenect2 很像本身就有提供 API 讀取這些資訊,我只跑過 libfreenect2 的 範例,我很好奇我還需要使用 OpenNI2嘛?還是他還是有一些更好的API提供呢?
讚讚
在 OpenNI 的社群已經弱化的現在,老實說,沒必要;看你想用哪個寫,並沒有什麼影響。
以現在的狀態來看,使用 OpenNI 的好處,只在於你可以用同樣的 API,存取不同的深度感應器。
除了 MS Kinect、ASUS Xtion 外,有不少深度感應器,都有對應 OpenNI2 的驅動程式模組可以用。
讚讚
感謝你~,我們再做的是有視覺的機器人,所以想說大家一直推OpenNI,原來是因為他能支援多種感應器,另一個是他有一些演算法的實作,那目前看來都被綁死那麼就不需要他了。
讚讚
在早期 OpenNI 是有明確的優勢的。
至少在 PrimeSense 還在的時候,OpenNI 應該算是唯一一個有完整的人體骨架追蹤的開放社群的開發環境。雖然 NiTE 僅限於 PrimeSense 的感應器,但是還是相當充分了~
此外,當時也還有不少人,是針對他還開發應用的。
不過在 PrimeSense 被 Apple 買了之後…基本上總覺得沒救了。 XD
讚讚
话说我做的第一个游戏就是使用第一代Kinect跑在linux上的体感游戏,那时候好像是11年吧,可惜,最后因为需求和工期一直在变化,然后OpenNI和Kinect环境也在恶化,最后不了了之了,现在转向手游方向了,手上现在还保留这第一代Kinect……OpenNI真是可惜了,当时觉得还挺有发展性的,结果突然就土崩瓦解了。
讚讚
只能說,討厭的 Apple 啊…把人家買下來就不管其他東西了 ><
讚讚
How about intel realsense?
讚讚
沒錢買,沒玩過。不過基本上應該就是用 Intel 的方案了。
讚讚
去年就已經放棄繼續使用Kinect 2了
還在繼續開發的加油!!
精神上支持XD
讚讚
老實說,Heresy 現在也都在弄別的東西,沒再繼續玩了…
讚讚