2015-10-06 20 views
9

kinect SDKツールで提供されたDiscreteGestureBasicsプロジェクトとRecordAndPlaybackBasicsを組み合わせようとしています。 RecordAndPlaybackBasicsコードには、.xefファイルを再生して.xefを記録する2つの主要なメソッドがあります。私は.xefファイルを読み込み、DiscreteGestureBasicsのコードを使ってジェスチャを評価したいと思います。 DiscreteGestureBasicsでは、RecordAndPlaybackBasicsのコードを使用して再生.xefファイルの機能を入力します。.xefファイルから視覚的なジェスチャーをオフラインで検出する

private void PlaybackClip(string filePath) 
    { 
     using (KStudioClient client = KStudio.CreateClient()) 
     { 
      client.ConnectToService();   
      using (KStudioPlayback playback = client.CreatePlayback(filePath)) 
      { 
       playback.LoopCount = this.loopCount; 
       playback.Start(); 
       while (playback.State == KStudioPlaybackState.Playing) 
       { 

        Thread.Sleep(100); 
       } 
      } 
      client.DisconnectFromService(); 
     } 

     // Update the UI after the background playback task has completed 
     this.isPlaying = false; 
     this.Dispatcher.BeginInvoke(new NoArgDelegate(UpdateState)); 
    } 

IはplaybackClip関数内GestureDetector.csのコード(DiscreteGestureBasicsからスクリプト)を追加しようとした:再生ファイルのコードは以下の通りです。私は再生機能を持つボタンを追加するので、ボタンを押すと.xefファイルが再生を開始します。 xefは正常に視覚化されますが、検出器の信頼スコアは常にゼロです。 GestureDetector.csの次のコードでは、scirptのdiscreteResultsは常にnullです。どのようなアイデアがここで何が間違っているかもしれない?

VisualGestureBuilderFrameReference frameReference = e.FrameReference; 
using (VisualGestureBuilderFrame frame =frameReference.AcquireFrame()) 
{// frame return always null 
if (frame != null) 
{ 
    IReadOnlyDictionary<Gesture, ContinuousGestureResult> discreteResults = frame.ContinuousGestureResults; 
    if (discreteResults != null) //discreteResults is always null. 
    { 
    } 
} 
} 

gestureDetectorの初期化がメインウィンドウ()に見出すことができる:私は再生機能System.Diagnostics.Process.Start("VgbView.exe");からVgbView.exeを実行するとき

 int maxBodies = this.kinectSensor.BodyFrameSource.BodyCount; 
    for (int i = 0; i < maxBodies; ++i) 
    { 
      GestureResultView result = new GestureResultView(i, false, false, 0.0f); 
      GestureDetector detector = new GestureDetector(this.kinectSensor, result); 
      this.gestureDetectorList.Add(detector); 

      ContentControl contentControl = new ContentControl(); 
      contentControl.Content = this.gestureDetectorList[i].GestureResultView; 
    ... 
    } 

はまた、視聴者が通常ジェスチャーを評価します。なぜ私の場合、私はContinuousGestureResultsにアクセスできませんか?週末のうちに私は何かを変え、自分のスコープ(xxからの繰り返しを数える)で成功しましたが、今は私が何を変えたのか覚えていません。なぜIReadOnlyDictionary<Gesture, ContinuousGestureResult> discreteResults = frame.ContinuousGestureResults;ジェスチャーとContinuousGestureResultは常にnullですか?すべてのフレームについて、私は次のメソッドを受け取っています。IsTrackingIdValidは常にfalseです。

答えて

-1

"VEFを使用するには、少なくともスケルトンと深さ情報を含むeXtendedイベントファイル(XEF)ファイルが必要です。拡張イベントファイル(XEF)の記録と表示の詳細については、Kinect Studio " Visual Gesture Bilder (MSDN)

だから、uが、このようなあなたの記録骨格と奥行き情報を追加しました:

KStudioEventStreamSelectorCollection streamCollection = new KStudioEventStreamSelectorCollection(); 
    streamCollection.Add(KStudioEventStreamDataTypeIds.Depth); 
    streamCollection.Add(KStudioEventStreamDataTypeIds.Body); 
    streamCollection.Add(KStudioEventStreamDataTypeIds.BodyIndex); 
+1

をはいオフコース私が保存され.xefています。レコーディング機能(RecordAndPlaybackBasicsのものは魅力的です)。私の問題は、再生ファイルを再生すると、gestureDetectorで評価できないということです。それはnullジェスチャーフレームを持っているようだ。 xefファイルからの情報は問題ありません。 –

+0

私は自分の問題がtrackingId機能にあると思う。たぶん私はtrackingIdを適切に比較しないでしょう。 –

関連する問題