2015-10-06 32 views
9

Tôi đang cố gắng kết hợp dự án DiscreteGestureBasics được cung cấp với công cụ kinect sdk và với RecordAndPlaybackBasics. Mã RecordAndPlaybackBasics có hai phương thức chính phát lại tệp .xef và ghi lại tệp .xef. Tôi muốn đọc một tệp .xef và đánh giá các cử chỉ bằng cách sử dụng mã từ DiscreteGestureBasics. Trong DiscreteGestureBasics tôi nhập chức năng để phát lại các tập tin .xef sử dụng mã từ RecordAndPlaybackBasics. Mã cho tệp phát lại như sau:Phát hiện cử chỉ trực quan ngoại tuyến từ các tệp .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)); 
    } 

Tôi đã cố thêm mã GestureDetector.cs (tập lệnh từ DiscreteGestureBasics) vào trong chức năng playbackClip. Tôi thêm một nút với chức năng phát lại, do đó khi tôi nhấn nút, tập tin .xef sẽ bắt đầu phát. Các xef được hiển thị bình thường, tuy nhiên điểm số tin cậy của máy dò là liên tục bằng không. Trong đoạn mã sau từ GestureDetector.cs scirpt discreteResults luôn là null. Bất kỳ ý tưởng những gì nó có thể sai ở đây?

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

Việc khởi của gestureDetector có thể được tìm thấy trong MainWindow():

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

Hơn nữa khi tôi chạy VgbView.exe từ Playback chức năng System.Diagnostics.Process.Start("VgbView.exe"); người xem đánh giá thường là cử chỉ. Tại sao trong trường hợp của tôi tôi không thể truy cập ContinuousGestureResults? Bên trong cuối tuần tôi thay đổi một cái gì đó và tôi thành công trong phạm vi của tôi (trong đếm lặp lại từ .xef) nhưng bây giờ tôi không nhớ những gì tôi đã thay đổi (và unintenionally hủy bỏ sự thay đổi). Tại sao IReadOnlyDictionary<Gesture, ContinuousGestureResult> discreteResults = frame.ContinuousGestureResults; Cử chỉ và ContinuousGestureResult liên tục bị vô hiệu? Thêm cho mỗi khung hình tôi nhận được phương pháp sau đây IsTrackingIdValid liên tục sai.

Trả lời

-1

"Để sử dụng VGB, bạn phải có tệp tệp sự kiện (XEF) eXtended chứa ít nhất, thông tin về bộ xương và độ sâu. Để biết thông tin về cách ghi và xem tệp sự kiện (XEF), xem Kinect Studio . " Visual Gesture Bilder (MSDN)

Vì vậy, u đã thêm vào bộ xương hồ sơ của bạn và thông tin chi tiết như thế này:

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

Có off-Tất nhiên tôi đã được lưu trữ .xef. Chức năng ghi âm (từ RecordAndPlaybackBasics đang hoạt động như một nét duyên dáng). Vấn đề của tôi là khi tôi phát tập tin phát lại, tôi không thể đánh giá nó bằng gestureDetector. Dường như tôi đã có một khung cử chỉ rỗng. Thông tin từ tệp xef là tốt. –

+0

Tôi nghĩ rằng vấn đề của tôi nằm trong tính năng trackingId. Có lẽ tôi không so sánh đúng trackingId. –

Các vấn đề liên quan