2012-12-04 4 views
0

Kinect가 컴퓨터에 연결되어 있는지 확인하는 프로그램이 있습니다. 그러나, 나는 (내가 그렇게 생각할 것입니다) 메소드를 호출 할 필요가 있는지, 그리고 어디에 있는지 정말로 모르겠습니다. 나는 Kinect 서적에서 얻은 코드를 첨부했다. 감사!Kinect SDK에서 메소드를 호출하는 방법은 무엇입니까?

using System; 
using System.Windows; 
using System.Windows.Controls; 
using Microsoft.Kinect; 

namespace test 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

     } 

    KinectSensor kinectSensor; 
    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      KinectSensor.KinectSensors.StatusChanged += Kinects_StatusChanged; 
      foreach (KinectSensor kinect in KinectSensor.KinectSensors) 
      { 
       if (kinect.Status == KinectStatus.Connected) 
       { 
        kinectSensor = kinect; 
        MessageBox.Show("Connected"); 
        break; 
       } 
      } 
      if (KinectSensor.KinectSensors.Count == 0) 
       MessageBox.Show("No Kinect Found"); 
      else 
       Initialize(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

    void Kinects_StatusChanged(object sender, StatusChangedEventArgs e) 
    { 
     switch (e.Status) 
     { 
      case KinectStatus.Connected: 
       if (kinectSensor == null) 
       { 
        kinectSensor = e.Sensor; 
        Initialize(); 
       } 
       break; 
      case KinectStatus.Disconnected: 
       if (kinectSensor == e.Sensor) 
       { 
        Clean(); 
        MessageBox.Show("Kinect was disconnected"); 
       } 
       break; 
      case KinectStatus.NotReady: 
       break; 
      case KinectStatus.NotPowered: 
       if (kinectSensor == e.Sensor) 
       { 
        Clean(); 
        MessageBox.Show("Kinect is not powered anymore."); 
       } 
       break; 
      default: 
       MessageBox.Show("Unhandled Status: " + e.Status); 
       break; 
     } 
    } 

    private void Initialize() 
    { 
     if (kinectSensor == null) 
      return; 
     kinectSensor.Start(); 
    } 

    private void Clean() 
    { 
     if (kinectSensor != null) 
     { 
      kinectSensor.Stop(); 
      kinectSensor = null; 
     } 
    } 

} 

}

답변

1

다운로드 Kinect for Windows Developer Toolkit. 거기에 여러 가지 방법으로 여러 가지 예가 있습니다. 시작하면 Kinect와 대화하는 법을 이해하는 데 도움이됩니다.

일단 Kinect에 연결했다면 설정하고 이벤트 콜백에 가입해야합니다. 이 같은 형태의 기능하게 될 겁니다 :

private void InitializeKinectServices(KinectSensorManager kinectSensorManager, KinectSensor sensor) 
{ 
    // configure the color stream 
    kinectSensorManager.ColorFormat = ColorImageFormat.RgbResolution640x480Fps30; 
    kinectSensorManager.ColorStreamEnabled = true; 

    // configure the depth stream 
    kinectSensorManager.DepthStreamEnabled = true; 

    kinectSensorManager.TransformSmoothParameters = 
     new TransformSmoothParameters 
     { 
      // as the smoothing value is increased responsiveness to the raw data 
      // decreases; therefore, increased smoothing leads to increased latency. 
      Smoothing = 0.5f, 
      // higher value corrects toward the raw data more quickly, 
      // a lower value corrects more slowly and appears smoother. 
      Correction = 0.5f, 
      // number of frames to predict into the future. 
      Prediction = 0.5f, 
      // determines how aggressively to remove jitter from the raw data. 
      JitterRadius = 0.05f, 
      // maximum radius (in meters) that filtered positions can deviate from raw data. 
      MaxDeviationRadius = 0.04f 
     }; 

    // configure the skeleton stream 
    sensor.SkeletonFrameReady += OnSkeletonFrameReady; 
    kinectSensorManager.SkeletonStreamEnabled = true; 

    // initialize the gesture recognizer 
    _gestureController = new GestureController(); 
    _gestureController.GestureRecognized += OnGestureRecognized; 

    kinectSensorManager.KinectSensorEnabled = true; 

    if (!kinectSensorManager.KinectSensorAppConflict) 
    { 
     // additional init 
    } 
} 

이 개발자 툴킷에서 예 떨어져 기반으로 내 일반적인 설정 기능입니다. 이 코드를 코드에 연결할 수 없으며 제대로 작동합니다. Toolkit의 예제를 살펴보면 어디서 발생했는지, 어떻게 관리 하는지를 알 수 있습니다.

KinectExplorer 예제는 살펴보기 좋은 전체 프로젝트입니다. 또한 위의 기능이 작동하는 방식 (동일한 기능을 가짐)에 대한 명확한 이해를 제공합니다.

관련 문제