2011-11-15 11 views
0

私はKinect SDKを使用してKinectからデータを読み込みます。分時には、ストリームから数秒ごとに画像を保存し、音声の録音を開始するアプリケーションがありますが、動きが検出されたときにコードを実行するだけです(動きが検出されたときに記録を開始するセキュリティカメラと考える)。動きが検出された場合、コードサンプルで発生したイベントは表示されません。人物が検出された場合は、私が使用することができるのはnui_SkeletonFrameReadyです。これについて簡単な方法がありますか?移動が発生するとイベントが発生する

答えて

1

は現在、このシナリオで提起されたイベントがありません。私がしたのは、APIに付属の画像準備完了イベントに登録されており、AForge.netのライブラリを使用して、前の画像と現在の画像を比較しました。

0

あなたは、デバイスからの骨格追跡データを受信するRuntimeOptions.UseSkeletalTrackingフラグでKinectのランタイムを初期化することができます。

var runtime = new Runtime(); 
runtime.Initialize(RuntimeOptions.UseSkeletalTracking| RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseColor); 

その後SkeletonFrameReadyイベントをサブスクライブ:

runtime.SkeletonFrameReady += nui_SkeletonFrameReady; 

このイベントが発生します継続的に追跡されているかどうかを判断するために、SkeletonFrameコレクション内の6つの可能なスケルトンのコレクションを反復処理する必要があります。

void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) 
{ 
    SkeletonFrame allSkeletons = e.SkeletonFrame; 

    //get the first tracked skeleton 
    SkeletonData skeleton = (from s in allSkeletons.Skeletons 
         where s.TrackingState == SkeletonTrackingState.Tracked 
         select s).FirstOrDefault(); 

    if skeleton != null 
    { 
     // Start recording audio, etc 
    } 
} 

詳細および例は、このチャンネル9のビデオにあります

Skeletal Tracking Fundamentals

+0

たぶん、わたしははっきりしていなかったかもしれません...私は文字通り、フレーム間で動きが発生したときを知りたいと思っています。スケルトンを追跡/検出することとは関係ありません。スケルトンが検出されたときに発生するイベントを認識していますが、動きが発生したときを検出する簡単な方法を探していました。私が今までに遭遇した最善の解決策はhttp://www.aforgenet.comのプロジェクトです。ここでは最新のイメージと最後のイメージの違いを検出するために検出を使用できます。私は、APIに何か似たものが含まれていることを期待していた... –

関連する問題