這一篇,算是稍微整理一下近期的 OpenNI 2 相關資訊的更新。
部落格內部文章
首先,是 Heresy 自己的網站的部分。之前雖然有弄一篇《OpenNI / Kinect 相關文章目錄》來做為總目錄,不過其實有一段時間沒更新了,新的文章也沒有加進去…前幾天,終於花了一點時間,又整理了一下;這次,除了把相關資訊補上之外,同時也把 OpenNI 2、以及對應的 middleware 的文章,獨立成一篇《OpenNI 2.x 教學文章》了~
另外,《OpenNI 2 & NiTE 2 課程投影片與範例》這邊所提供的投影片以及範例程式,也有再根據 OpenNI 2.2 的改變,做了一些對應的修改;有興趣的話可以參考看看。
Python Binding
OpenNI 2 一開始只有提供 C / C 的 API,而後來也有人開發了 .Net 的 Wrapper。到了 2.2 版後,官方也直接在 OpenNI 內提供了 Java Wrapper,讓開發者可以直接使用。
而現在,PrimeSense 則是以實驗室的名義(和之前的 Grab Detector 類似),放出了 Python Bindings 讓大家可以下載使用;如果有使用 Python 的話,應該可以下載來玩看看了~
OpenNI 2.3 對 Kinect 支援的加強
在 OpenNI 2 開推出的時候,或許是由於剛開始透過 Kinect for Windows SDK 來存取 Kinect 感應器吧?所以第一個版本對於 Kinect 的支援其實滿差的,不但 Kinect 感應器的特殊功能都不支援,連基本的 mirror、深度/彩色影像的對位也都不能用。(參考《OpenNI 2 對 Kinect 的支援》)
到了 OpenNI 2.2.0.21,終於是把 Image registration 功能加進來了~不過很遺憾的是,對於 mirror 等功能的支援,都還是沒有加進來的。所以 Heresy 自己其實後來有再改出一個「OpenNI 2 的 Kinect 驅動模組加強版」,提供了 mirror,以及 Kinect 感應器的特殊功能控制。
而現在,OpenNI 終於在 GitHub 上的 develop 分支、把相關功能整進去了!不過,他整的不是 Heresy 提交的版本(連結),而是 Tomoto 這位網友提交的版本(連結一、連結二)。
雖然說他好像是參考 Heresy 的版本修改、最佳化的,不過修改的幅度非常大就是了…
除了 mirror、感應器角度、加速度感應器資料、Near Mode 的支援外,他還加入了一些其他 Heresy 沒有加入的功能,包括了「紅外線發射器的開關控制」、「Audio Arry ID 的取得」;所以整個修改後的版本,新增的屬性(定義在 \Include\KinectProperties.h 裡),總共有五個
-
KINECT_DEPTH_PROPERTY_CLOSE_RANGE
-
KINECT_DEVICE_PROPERTY_EMITTER_STATE
-
KINECT_DEVICE_PROPERTY_CAMERA_ELEVATION
-
KINECT_DEVICE_PROPERTY_ACCELEROMETER
-
KINECT_DEVICE_PROPERTY_AUDIO_ARRAY_ID
沒意外的話,到下一版 OpenNI 放出來的時候,應該就可以直接用了!而如果想要搶先試用的話,則就是需要自己去下載原始碼來自己建置了。
PrimeSense NiTE 2.2.0.10
雖然很可惜,OpenNI 官網的 middleware 還是沒有提供 changelog 或 release note 的功能,不過至少目前 PrimeSense 的 NiTE,開始直接在網站上列出版本編號,還有新功能了!而目前最新的版本,就是 2.2.0.10~下載的網址是:http://www.openni.org/files/nite/。
而在這次 2.2 的新功能,則是列了:
- Added support for Capri
- Multiple devices support
- Java Wrappers including two new samples (UserViewer.Java & HandViewer.Java)
- Linux support
- Mac support
除了和 OpenNI 2 一樣,也提供了 Java Wrapper 之外,最重要的一點,應該就是他終於支援多感應器了!(其實應該也是之前的版本就支援了,參考)
這個功能算是從 OpenNI 1 的時候,就很多人有要求了,而現在在 OpenNI 2 的環境下,終於可以針對個別感應器、個別追蹤了!不過 Heresy 自己還沒玩過,或許之後會找時間試試看吧~