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

Natural Software

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

Kinect for Windows SDK で プレーヤーを認識させる(C# + WPF)

Kinect


次はプレーヤーです。
Kinect Toolkitを利用している場合は、前回のコードから一行追加するだけです。

コード

全体のコードはこちらにあります。

public MainWindow()
{
    InitializeComponent();
    try {
        if ( KinectSensor.KinectSensors.Count == 0 ) {
            throw new Exception( "Kinectが接続されていません" );
        }

        // Kinectインスタンスを取得する
        KinectSensor kinect = KinectSensor.KinectSensors[0];

        // Colorを有効にする
        kinect.ColorFrameReady +=
            new EventHandler<ColorImageFrameReadyEventArgs>( kinect_ColorFrameReady );
        kinect.ColorStream.Enable();

        // Depthを有効にする
        kinect.DepthFrameReady +=
            new EventHandler<DepthImageFrameReadyEventArgs>( kinect_DepthFrameReady );
        kinect.DepthStream.Enable();

        // Skeletonを有効にするとプレーヤーが取得できる
        kinect.SkeletonStream.Enable();

        // Kinectの動作を開始する
        kinect.Start();
    }
    catch ( Exception ex ) {
        MessageBox.Show( ex.Message );
        Close();
    }
}

追加されたコードは kinect.SkeletonStream.Enable() の部分のみです。
自前でやろうとした場合は、DepthImageFrameに定義されている、プレーヤーインデックスを取得するためのPlayerIndexBitmask(値:7)を使ってpixelごとに抜き出すことになるでしょう。