インストール
processingでkinectを扱うためには以下をインストールする必要がある。- OpenNI : Kinectを使うためのライブラリ
- NITE : ジェスチャ認識などをするためのライブラリ
- SensorKinect : Kinectのデバイスドライバ
- Simple-OpneNI : processingでKinectを扱うためのライブラリ
https://code.google.com/p/simple-openni/downloads/list
からダウンロードすることができる。
- 環境に合わせてOpenNI_NITE_Installer-xxx-0.27.zipをダウンロード
- zipファイルを解凍してopenni-xxx-1.5.4.0-dev.msiをダブルクリックしてインストール
- nite-xxx-1.5.2.21-dev.msiをダブルクリックしてインストール
- SensorKinect092-Bin-xxx-v5.1.2.1.msiをダブルクリックしてインストール
- SimpleOpenNI-0.27.zipをダウンロードして解凍
- 解凍してできたフォルダをprocessingのルートフォルダ以下のlibrariesフォルダにコピー
軽く試してみる
ユーザを検出して人の部分に色を塗るプログラムを書いてみる。実行結果は以下のようになる。import SimpleOpenNI.*; SimpleOpenNI context; color[] userColors = { color(255,0,0), color(0,255,0), color(0,0,255), color(255,255,0), color(255, 0, 255), color(0, 255, 255) }; void setup() { context = new SimpleOpenNI(this); context.setMirror(false); context.enableDepth(); context.enableUser(SimpleOpenNI.SKEL_PROFILE_ALL); size(context.depthWidth(), context.depthHeight()); } void draw() { context.update(); image(context.depthImage(), 0, 0); int[] userMap = null; int userCount = context.getNumberOfUsers(); if (userCount > 0) { userMap = context.getUsersPixels(SimpleOpenNI.USERS_ALL); } loadPixels(); for (int y=0; y<context.depthHeight(); y++) { for (int x=0; x<context.depthWidth(); x++) { int index = x + y * context.depthWidth(); if (userMap != null && userMap[index] > 0) { int colorIndex = userMap[index] % userColors.length; pixels[index] = userColors[colorIndex]; } } } updatePixels(); }
こういったプログラムが以下の本に書いてある。