2016-05-20 7 views
0

Используя kinect, я пытаюсь получить подачу и рулон лица лица. Чтобы вычислить эти значения, я пытаюсь получить FaceRotationQuaternion. Однако, похоже, NaN возвращает значения Y и Z.Kinect v2.0 FaceFrameResult.FaceRotationQuaternion возвращающийся NAN

Пример значений кватернионов вращения:

X: 0 Y: NaN Z: NaN W: 2.80259692864963E-45 

Код, используемый для того, когда приходит новый кадр лицо.

void FaceReader_FrameArrived(object sender, FaceFrameArrivedEventArgs e) 
    { 
     using (var frame = e.FrameReference.AcquireFrame()) 
     { 
      if (frame != null) 
      { 
       // 4) Get the face frame result 
       FaceFrameResult result = frame.FaceFrameResult; 

       if (result != null) 
       { 
        System.Diagnostics.Debug.WriteLine("Found Face"); 

        faceRotation = result.FaceRotationQuaternion; 
        double x = result.FaceRotationQuaternion.X; 
        double y = result.FaceRotationQuaternion.Y; 
        double z = result.FaceRotationQuaternion.Z; 
        double w = result.FaceRotationQuaternion.W; 

        System.Diagnostics.Debug.WriteLine("X: " + x + " Y: " + y + " Z: " + z + " W: " + w); 

       } 
      } 
     } 
    } 

Лицо зарегистрировано в теле.

void BodyReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e) 
     { 

      //Sent the data over bluetooth. 
      //btc.sendKinectData(kinectData); 

      using (var frame = e.FrameReference.AcquireFrame()) 
      { 
       if (frame != null) 
       { 
        bodies = new Body[frame.BodyFrameSource.BodyCount]; 
        frame.GetAndRefreshBodyData(bodies); 

        Body body = bodies.Where(b => b.IsTracked).FirstOrDefault(); 

        if (!faceFrameSource.IsTrackingIdValid) 
        { 
         if (body != null) 
         { 
          // 4) Assign a tracking ID to the face source 
          faceFrameSource.TrackingId = body.TrackingId; 
         } 
        } 
       } 
      } 
     } 

Как я могу получить правильные значения с помощью FaceRotationQuaternion?

ответ

0

Я нашел решение. Похоже, что ориентация головы также является особенностью, и поэтому ее необходимо загрузить до ее работы.

faceFrameSource = new FaceFrameSource(kinectSensor,0,FaceFrameFeatures.RotationOrientation); 

 Смежные вопросы

  • Нет связанных вопросов^_^