WisdomSoft - for your serial experiences.

デバイスの検出

複数の Kinect を同時に PC に接続して利用することができます。アプリケーションから Kinect を利用するには、Kinect の接続台数を調べ、操作する Kinect の番号を指定しなければなりません。C++ のネイティブコードで接続されている Kinect センサーの数を取得する方法を解説します。

接続されている Kinect センサーの数を得る

Kinect のカメラやモーションに関連した機能は MSR_NuiApi.h ヘッダファイルで宣言されています。Kinect に関連した型や定数を利用するためにも、このヘッダファイルが必要になるためインクルードしましょう。

アプリケーションから Kinect センサーを利用するには、実行している PC に Kinect が接続されているかどうかを調べる必要があります。Xbox 360 には 1 台の Kinect しか接続できませんが、PC には複数台の Kinect を接続できます。ただし、骨格情報を得られるのは 1 台からのみで、複数台から同時に骨格を取得することはできません。映像は、同時に取得できます。

正確には、複数台の Kinect が同一の USB コントローラに接続されている場合、そのうちの 1 台からのみ骨格を取得できます。複数の Kinect から同時に骨格を取得したい場合は、複数の USB コントローラを持つ PC で、それぞれの USB コントローラのポートに Kinect を接続させれば可能です。

PC に接続されている Kinect センサーの数を取得するには NuiGetSensorCount() 関数を使います。

MSR_NUIGetDeviceCount() 関数
HRESULT NuiGetSensorCount(int *pCount)

pCount パラメータに、接続されている Kinect センサーの数を取得する整数へのポインタを指定します。関数が成功すれば S_OK が返ります。pCount パラメータに指定されたポインタが有効ではない場合は E_POINTER が返されます。

コード1
#include <iostream>
#include <Windows.h>
#include <NuiApi.h>

int main()
{
	int sensorCount;
	NuiGetSensorCount(&sensorCount);

	if (sensorCount == 0)
		std::cout << "Kinectが接続されていません\n";
	else
		std::cout << "Kinectが" << sensorCount << "台検出されました\n";

	return 0;
}
実行結果
コード1 実行結果

コード1は PC に接続されている Kinect センサーの数を出力するだけの単純なコンソールアプリケーションです。

外部リンク

関連文書