KinectをC#から使ってみる(先走り編)

| コメント(0) | トラックバック(2) このエントリーを含むはてなブックマーク

Kinectというマイクロソフトから販売されたXbox 360向けのゲームデバイスでプレイヤーの位置、動き、声、顔を認識することができたりする。このデバイスは、多くをデバイス内のプロセッサで処理をしているらしく、ソフトウェアの処理が軽減される。

このデバイスを知って、思わず欲しくなってしまったので、購入した。

なお、自分は XBox 360 を持っていません。

このデバイス、NITEというライブラリを使えば、比較的簡単に利用できそうという事で挑戦。

インストールについては KinectをPCで使う1 を参照ください。

C#で利用してみる

とりあえず、以下のようなコードを書いてみて、手を振った所イベントハンドラに飛んできた。 うれしくなったので、ここに記録に残しておきます。

using ManagedNite;
using System.Threading;
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            XnMSwipeDetector SwipeDetector;
            XnMWaveDetector WaveDetector;

            var context = new XnMOpenNIContext();
            XnMSessionManager sessionManager;

            try
            {
                context.Init();
                sessionManager = new XnMSessionManager(context, "Wave,Click", "RaiseHand");

                sessionManager.FocusStartDetected += new EventHandler<FocusStartEventArgs>(sessionManager_FocusStartDetected);
                sessionManager.SessionStarted += new EventHandler<PointEventArgs>(sessionManager_SessionStarted);
                sessionManager.SessionEnded += new EventHandler(sessionManager_SessionEnded);


                SwipeDetector = new XnMSwipeDetector();
                SwipeDetector.SwipeLeft += new EventHandler<SwipeDetectorEventArgs>(swipeDetector_SwipeLeft);
                SwipeDetector.SwipeRight += new EventHandler<SwipeDetectorEventArgs>(swipeDetector_SwipeRight);
                SwipeDetector.SwipeUp += new EventHandler<SwipeDetectorEventArgs>(SwipeDetector_SwipeUp);
                SwipeDetector.SwipeDown += new EventHandler<SwipeDetectorEventArgs>(SwipeDetector_SwipeDown);
                sessionManager.AddListener(SwipeDetector);

                WaveDetector = new XnMWaveDetector();
                WaveDetector.Wave += new EventHandler(waveDetector_Wave);
                sessionManager.AddListener(WaveDetector);
            }
            catch (ManagedNite.XnMException ex)
            {
                Console.WriteLine(ex);
                throw ex;
            }

            Thread t = new Thread(() =>
            {
                while (true)
                {
                    //Debug.WriteLine("Updating context.");
                    context.Update();
                    sessionManager.Update(context);
                    Thread.Sleep(10);
                }
            });
            t.Start();
        }
        
 
 

なお、このコード、見る方が観れば中途半端なのが分かると思います。

この辺は別の記事にしたいと思いますので、お待ちください。

ちなみに購入したい方は

以下をチェックしてみてはいかがでしょうか? (楽天さんのサイトです)

トラックバック(2)

トラックバックURL: http://www.m-tea.info/mt-tb.cgi/82

Kinectというマイクロソフトから販売されたXbox 360向けのゲームデバ... 続きを読む

Kinectというマイクロソフトから販売されたXbox 360向けのゲームデバイ... 続きを読む

コメントする

あわせて読みたいブログパーツ

このブログ記事について

このページは、k1ha410が2010年12月21日 17:04に書いたブログ記事です。

ひとつ前のブログ記事は「KinectをPCで使う1」です。

次のブログ記事は「Kinect OpenNIのサンプルプログラムを動かしてみる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。