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.
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. –
Sorunları trackingId özelliği bulunan düşünüyorum. Belki de düzgün trackingId karşılaştırmıyorum. –