[Kinect SDK][C#][XNA]深度画像から人数をカウントする
人が居る・居ないを判断して画面表示を変える のTipsでも同じような事をしていますが、
Kinect SDK + VisualC# + XNA で、必要最低限の人数をカウントするソースを書いておきます。
もっとシンプルなやり方あるかも?
もしあったら教えてください・・・。
■ソースコード
最初に定義する。
private bool[] user_index = new bool[7]; //ユーザインデックス
private int user_count = 0; //ユーザの数
深度カメラのイベントの部分で画像の全ピクセルのユーザインデックスを調べていく。
#region 奥行き画像
void Kinect_DepthFrameReady(object sender, ImageFrameReadyEventArgs e)
{
lock (this)
{
PlanarImage Image = e.ImageFrame.Image;
//-- ユーザカウントループ --//
for (int i = 0; i < 7; i++) { user_index[i] = false; } //user_index値リセット
user_count = 0;//ユーザ数カウント
for (int y = 0; y < Image.Height; ++y){ //y軸
for (int x = 0; x < Image.Width; ++x, no += 2){ //x軸
int player = Image.Bits[(y * 320 + x) * 2] & 0x07;//プレイヤーインデックス
for (int n = 1; n < 7; n++)
{
if (player == n) {
if ( !user_index[n-1] ){
user_index[n-1] = true;
user_count++; //ユーザ数に加算
}
}
}
}
}
}
}
#endregion