[Kinect SDK][C#][XNA]深度画像から人数をカウントする

by Teruaki Tsubokura 0 Comments

人が居る・居ないを判断して画面表示を変える の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

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください