2015-10-06 17 views
9

RecordAndPlaybackBasics ve kinect sdk aracıyla sağlanan DiscreteGestureBasics projesini birleştirmeye çalışıyorum. RecordAndPlaybackBasics kodu bir .xef dosyasını oynatmak ve bir .xef kaydetmek için iki ana yönteme sahiptir. Bir .xef dosyasını okumak ve DiscreteGestureBasics'ten kodu kullanarak jestleri değerlendirmek istiyorum. DiscreteGestureBasics'te RecordAndPlaybackBasics kodunu kullanarak oynatma .xef dosyaları için işlevsellik giriyorum.Görsel hareketleri, .xef dosyasından çevrimdışı algılar

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)); 
    } 

Ben playbackClip işlevi içinde GestureDetector.cs kodunu (DiscreteGestureBasics gelen komut dosyası) eklemek çalıştı: çalma dosyası için kod şudur. Oynatma fonksiyonu ile bir düğme ekledim, böylece düğmesine bastığımda .xef dosyası oynatılmaya başlıyor. Xef normal olarak görselleştirilir, ancak dedektörün güven puanı sürekli sıfırdır. GestureDetector.cs scurpt discreteResults öğesinden aşağıdaki kod her zaman boştur. Burada neyin yanlış olabileceği hakkında bir fikrin var mı?

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 başlatma MainWindow() 'de bulunabilir: I Çalma fonksiyonu System.Diagnostics.Process.Start("VgbView.exe"); den VgbView.exe çalıştırmak

 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; 
    ... 
    } 

Ayrıca izleyici normal hareketi değerlendirir. Neden benim durumumda ContinuousGestureResults erişemiyorum? İçerde haftasonu bir şey değiştiriyorum ve kapsamımı başarılı bir şekilde (.xef'den tekrarlama saymakla) başardım, ancak şimdi neyi değiştirdiğimi hatırlamıyorum (ve değişimi geçici olarak iptal ediyorum). Neden IReadOnlyDictionary<Gesture, ContinuousGestureResult> discreteResults = frame.ContinuousGestureResults; Jest ve ContinuousGestureResult sürekli olarak boş mu? Her çerçeve için daha fazla aşağıdaki yöntemi alıyorum IsTrackingIdValid sürekli yanlıştır.

cevap

-1

"vgb kullanmak için, eXtended olmalı olay dosyası (XEF) en az yer aldığı dosyalardır, iskelet ve derinlik bilgisi. Kaydı hakkında bilgi ve genişletilmiş bir olay dosyası (XEF) görüntüleme için bkz Kinect Studio ." Visual Gesture Bilder (MSDN)

Yani u bu gibi rekor iskelet ve derinlik bilgisine ekledi:

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

Ben .xef sakladığınız dışı kurs Evet. Kayıt fonksiyonu (RecordAndPlaybackBasics bir çekicilik gibi çalışıyor). Benim sorunum, oynatma dosyasını yürüttüğümde onu jestDetector ile değerlendiremem. Görünüşe göre boş bir jestim var. Xef dosyasındaki bilgiler iyidir. –

+0

Sorunları trackingId özelliği bulunan düşünüyorum. Belki de düzgün trackingId karşılaştırmıyorum. –