Kinect for Windows SDK v2.0入門 目次
最初にKinect for Windows SDK v2.0で開発するための環境を作りましょう。Kinect for Windows SDK v2.0をインストールしてあることが前提です。
環境
筆者の環境は次の通りです。
- Windows 8.1 Pro Update1 64bit
- Visual Studio 2013 Ultimate(Express for Windows Desktopでも可)
- Kinect for Windows SDK v2.0-1409(リリース版)
- 32bitアプリケーション
- サンプルコードのリポジトリ
解説
Visual Studio のプロジェクトを作成する
Visual Studio Express 2012 for Windows Desktop を起動し、「Visual C++|Win32」から 「Win32 コンソール アプリケーション」を選択し、ソリューション名称を入力します。
「Win32 アプリケーション ウィザード」で「空のプロジェクト」にチェックを入れプロジェクトを作成します。
プロジェクトを右クリックし、「追加|新しい項目」を選択します。
「C++ファイル」を選択し、ファイル名を入力します。
プロジェクトのプロパティから「構成プロパティ|C/C++|追加のインクルードディレクトリ」で「$(KINECTSDK20_DIR)\inc」を指定します。
「構成プロパティ|リンカー|追加のライブラリディレクトリ」で「$(KINECTSDK20_DIR)\lib\x86」を追加します(64bitアプリの場合は「$(KINECTSDK20_DIR)\lib\x64」)。
最後に「構成プロパティ|リンカー|入力|追加の依存ファイル」で「Kinect20.lib」を入力します。
最初のコード
コードを書いてみましょう。
#include <iostream>#include <sstream>
#include <Kinect.h>
// 次のように使います
// ERROR_CHECK( ::GetDefaultKinectSensor( &kinect ) );
// 解説でコードを見やすくするためにマクロにしています。
// 実際には展開した形で使うことを検討してください。
#define ERROR_CHECK( ret ) \
if ( (ret) != S_OK ) { \
std::stringstream ss; \
ss << "failed " #ret " " << std::hex << ret << std::endl; \
throw std::runtime_error( ss.str().c_str() ); \
}
void main()
{
try {
// Kinectセンサーと関連付ける
IKinectSensor* kinect = nullptr;
ERROR_CHECK( ::GetDefaultKinectSensor( &kinect ) );
// Kinectセンサーを動作させる
ERROR_CHECK( kinect->Open() );
// Kinectセンサーが動いたかどうか状態を取得する
BOOLEAN isOpen = false;
ERROR_CHECK( kinect->get_IsOpen( &isOpen ) );
std::cout << "Kinect is " << (isOpen ? "Open" : "Not Open") << std::endl;
// ちょっとまつ
::Sleep( 3000 );
// Kinectセンサーの動作を止める
kinect->Close();
kinect->Release();
}
catch ( std::exception& ex ){
std::cout << ex.what() << std::endl;
}
}
このプログラムを実行すると、マークと赤外線が光はじめます(いま手元にあるのが、Developer Previewなので、Xboxマークですw)
簡単にコードの解説をします。
- Kinect SDK v2を使うにはKinect.hをインクルードします。
- KinectへのアクセスにはIKinectSensorインタフェースを利用します。
- GetDefaultKinectSensor()を呼びだし、Kinectセンサーと関連付けます。
- IKinectSensor::Open()でKinectの動作を開始します。ここでマークが光ります。
- IKinectSensor::get_IsOpen()で開けたかどうかの状態がとれます。
- このまま数秒まち、アプリケーションを終了します。
- 終了時にはKinectセンサーの動作をとめ、参照カウンタを減らします。
ヘッダーファイルなどの設定を簡単にするプロパティシートも作りましたので、使ってみてください。