0

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

4

2 に答える 2

1

現在、このシナリオで発生するイベントはありません。私が行ったことは、APIに付属する画像準備イベントにサブスクライブし、AForge.netのライブラリを使用して前の画像を現在の画像と比較することでした。

于 2012-01-06T00:39:26.493 に答える
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のビデオにあります。

骨格追跡の基礎

于 2011-11-27T22:31:14.450 に答える