2011/06/19 つい先日ですが Kinect SDK が公開されました。
ダウンロードして、とりあえず触ってみたい場合はこちらが参考になります。
Kinect2 -Kinect for Windows SDK 導入-
Kinect SDK + OpenCV2.2 サンプルプログラム
とりあえず KinectSDK を使ってカラー画像、距離画像、スケルトン位置を取得して OpenCV で表示してみましょう。
…で、遊んでいるうち結構簡単にできました。
使用したコードと、その使い方を以下に示します。
まずは main 関数が書いてあるファイルです。
ハイライトした行にて、センサを初期化してます。
引数にはそれぞれ、カラー画像を取得するか、距離画像を取得するか、スケルトン情報を取得するかを指定します。
カラー画像だけ取得したい場合は、TRUE, FALSE, FALSE とかにするだけ。(Webカメラとして使う場合に有効か?)
必要ない場合はフラグを下すことをおすすめします。パフォーマンスが向上しますよ。
キー操作ですが、Esc キーで終了です。
ほか番号のキーを押すとそれぞれ次の動作をします。
'1' 深度画像(画素値の単位:mm)と確認表示用の深度画像の切り替え
'2' スケルトンの各点を表示する、非表示にする。(距離に応じてマークの色が変わります、遠くなると黒くなる仕様)
'3' 実行結果の画像に示すように、手の位置にだけマーカーを表示するモードの切り替え(これから指の認識とかやりたい人向けに…)
'4' チルト角を限界まで下げます。(センサが下を向く)
'5' チルト角を水平に戻します。
'6' チルト角を限界まで上げます。(センサが上を向く)
では肝となる"KinectSensor.h"の中身を示します。
ほとんど"SkeletalVier"プロジェクトのパクリですが、OpenCVを使う人には優しい GetSensorData 関数が追加されています。
一回こういうの作ってしまうと、OpenCVのことだけに集中できるので楽ですよね。
実装内容がこちら↓です。
NUIから始まる関数の説明は次の KinectSDK.chm を読んでください。
Audio以外の項目は全部読みましたけど、IR画像の取得やカメラのGainを調整する機能は用意されていない模様
Point Grey Researchの製品カメラの SDK 並みに機能を揃えてほしいところですね。
ビルドに必要なそのほかのファイルがこちら↓
次のファイルのプロパティから「プリコンパイル済みヘッダーファイルを作成する」を指定することを忘れずに
静的にリンクするファイルがこちら↓(ちなみにOpenCV2.3の場合です。2.2の方は 230 を 220 にします)
デバッグ版:opencv_core230d.lib; opencv_highgui230d.lib; MSRKinectNUI.lib;
リリース版:opencv_core230.lib; opencv_highgui230.lib; MSRKinectNUI.lib;
OpenCVを導入していない方がここまで読んでいるとは考えにくいですが
一応 OpenCV を Windows7 と VS2010 に導入する方法を示します。
OpenCV を準備する方法
静的リンクの方法ですが、プロジェクトのプロパティの「リンカ」→「入力ファイル」に上記を入力するだけです。
ファイルが存在しているディレクトリパスを追加してビルドに成功するか確かめましょう。
以上です。
2011/07/03 最終更新