Natural Software

KinectなどのDepthセンサーを中心に活動しています

Kinect for Windows SDK v2.0 で開発する環境を整える(C++編)

Kinect for Windows SDK v2.0入門 目次

最初にKinect for Windows SDK v2.0で開発するための環境を作りましょう。Kinect for Windows SDK v2.0をインストールしてあることが前提です。

環境

筆者の環境は次の通りです。

解説

Visual Studio のプロジェクトを作成する

Visual Studio Express 2012 for Windows Desktop を起動し、「Visual C++Win32」から 「Win32 コンソール アプリケーション」を選択し、ソリューション名称を入力します。   スクリーンショット 2014-07-17 11.30.50

Win32 アプリケーション ウィザード」で「空のプロジェクト」にチェックを入れプロジェクトを作成します。

スクリーンショット 2014-07-17 11.30.59

プロジェクトを右クリックし、「追加|新しい項目」を選択します。

スクリーンショット 2014-07-17 11.31.23

C++ファイル」を選択し、ファイル名を入力します。

スクリーンショット 2014-07-17 11.31.32

プロジェクトのプロパティから「構成プロパティ|C/C++|追加のインクルードディレクトリ」で「$(KINECTSDK20_DIR)\inc」を指定します。

スクリーンショット 2014-07-17 11.25.11

「構成プロパティ|リンカー|追加のライブラリディレクトリ」で「$(KINECTSDK20_DIR)\lib\x86」を追加します(64bitアプリの場合は「$(KINECTSDK20_DIR)\lib\x64」)。

スクリーンショット 2014-07-17 11.25.03

最後に「構成プロパティ|リンカー|入力|追加の依存ファイル」で「Kinect20.lib」を入力します。

スクリーンショット 2014-07-17 11.24.59

最初のコード

コードを書いてみましょう。

#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)

写真 (11)

簡単にコードの解説をします。

  • Kinect SDK v2を使うにはKinect.hをインクルードします。
  • KinectへのアクセスにはIKinectSensorインタフェースを利用します。
  • GetDefaultKinectSensor()を呼びだし、Kinectセンサーと関連付けます。
  • IKinectSensor::Open()でKinectの動作を開始します。ここでマークが光ります。
  • IKinectSensor::get_IsOpen()で開けたかどうかの状態がとれます。
  • このまま数秒まち、アプリケーションを終了します。
  • 終了時にはKinectセンサーの動作をとめ、参照カウンタを減らします。

ヘッダーファイルなどの設定を簡単にするプロパティシートも作りましたので、使ってみてください。

Kinect for Windows SDK v2.0入門 目次