WisdomSoft - for your serial experiences.

デバイスの検出

複数の Kinect を同時に PC に接続して利用することができます。アプリケーションから Kinect を利用するには、Kinect の接続台数を調べ、操作する Kinect の番号を指定しなければなりません。C# のマネージコードで接続されている Kinect デバイスの数を取得する方法を解説します。
注意:この文書は古いバージョンです。 この文書は Kinect for Windows SDK Beta 2 を解説しています。Kinect for Windos SDK 1.0 の記事はこちらです。

接続されている Kinect デバイスの数を得る

Kinect のカメラやモーションに関連した機能は Microsoft.Research.Kinect.Nui 名前空間で宣言されています。Kinect の機能を利用するソースコードでは、この名前空間を using ディレクティブでインポートしましょう。

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

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

PC に接続されている Kinect デバイスの数を取得するには Microsoft.Kinect.Nui.Runtime クラスを使用します。この Runtime クラスのインスタンスが、PC に接続されている Kinect デバイスを表し、このクラスを通じて Kinect を制御できます。

Microsoft.Kinect.Nui.Runtime クラス
public sealed class Runtime

このクラスは PC に接続されている Kinect デバイスを取得する静的な Kinects プロパティを公開しています。

Runtime クラス Kinects プロパティ
public static KinectDeviceCollection Kinects { get; }

Kinects プロパティは、PC に接続されているすべての Kinect デバイスを管理する Microsoft.Kinect.Nui.KinectDeviceCollection クラスのオブジェクトを返します。このクラスは Runtime オブジェクトのコレクションを表します。

Microsoft.Kinect.Nui.KinectDeviceCollection クラス
public class KinectDeviceCollection : System.Collections.ObjectModel.ReadOnlyCollection<Runtime>

KinectDeviceCollection クラスは、上記のように ReadOnlyCollection<Runtime> を継承しているため、ここから PC に接続されている Kinect デバイスに紐づいた Runtime オブジェクトを得られます。このコレクションの Count プロパティが返す要素数をもって、PC に接続されている Kinect デバイスの数を検出できます。

コード1
using System;
using Microsoft.Research.Kinect.Nui;

class Sample
{
    static void Main(string[] args)
    {
        int deviceCount = Runtime.Kinects.Count;
        if (deviceCount == 0)
            Console.WriteLine("Kinectが接続されていません");
        else
            Console.WriteLine("Kinectが{0}台検出されました", deviceCount);
    }
}
実行結果
コード2 実行結果

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

関連文書