読者です 読者をやめる 読者になる 読者になる

Natural Software

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

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

Kinect for Windows v2

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入門 目次