Comment suivre les yeux avec Kinect SDK?

La condition est de définir un rectangle autour de chaque œil dans un espace 3D. Il devrait y avoir un moyen de suivre les yeux en utilisant le SDK Microsoft Kinect. Selon cette

Le kit de suivi de visages utilise le système de coordonnées Kinect pour générer ses résultats de suivi 3D. L’origine est située au centre optique de la caméra (capteur), l’axe Z est dirigé vers l’utilisateur, l’axe Y est dirigé vers le haut. Les unités de mesure sont les mètres pour la translation et les degrés pour les angles de rotation.

Ajouter

... Debug3DShape("OuterCornerOfRightEye", faceTrackFrame.Get3DShape() [FeaturePoint.OuterCornerOfRightEye]); Debug3DShape("InnerCornerRightEye", faceTrackFrame.Get3DShape() [FeaturePoint.InnerCornerRightEye]); Debug3DShape("InnerCornerLeftEye", faceTrackFrame.Get3DShape() [FeaturePoint.InnerCornerLeftEye]); Debug3DShape("OuterCornerOfLeftEye", faceTrackFrame.Get3DShape() [FeaturePoint.OuterCornerOfLeftEye]); ... private void Debug3DShape(ssortingng s, Vector3DF v) { Debug.WriteLine(s + " X " + vX + " Y " + vY + " Z " + vZ); } 

to CreateResult () dans les impressions Microsoft.Kinect.Toolkit.FaceTracking

 OuterCornerOfRightEye X -0.05728126 Y 0.04850625 Z -0.1144406 InnerCornerRightEye X -0.01584376 Y 0.04850625 Z -0.1279687 InnerCornerLeftEye X 0.01584374 Y 0.04850625 Z -0.1279687 OuterCornerOfLeftEye X 0.05728124 Y 0.04850625 Z -0.1144406 

lorsque le SDK commence à suivre un visage. Je devrais pouvoir utiliser ces coordonnées pour dessiner un cadre autour de chaque œil, mais la coordonnée Z devrait probablement être plus proche de 1,0, et non de -0,1 .. ou de -0,2 .. (selon ma configuration), de sorte que je ne fais pas confiance aux nombres. . Le XYZ est-il supposé être l’emplacement du FeaturePoint dans l’espace 3D par rapport au capteur? Est-ce que je comprends mal le système de coordonnées Kinect? Est-ce que j’utilise le SDK Kinect de manière incorrecte? Est-il important que j’utilise un capteur Xbox 360 Kinect? (Microsoft ne garantit pas la compatibilité totale des applications Kinect pour Windows et du capteur Kinect Xbox 360)

Edit: Ajout de cette

 if (trackSucceeded) { ... if (headPointsObj != null) for (int i = 0; i < 2; i++) DebugHeadPoint(i, headPointsObj.Points); } private void DebugHeadPoint(int i, Vector3DF[] points) { if (points == null) throw new ArgumentNullException("points"); Debug.WriteLine("HeadPoint[" + i + "] X " + points[i].X + " Y " + points[i].Y + " Z " + points[i].Z); } 

sur FaceTracker.cs :: Track () affiche ceci

 HeadPoint[0] X 0.01227657 Y -0.2290326 Z 1.319978 HeadPoint[1] X 0.00613283 Y -0.02143053 Z 1.280334 HeadPoint[0] X 0.003939687 Y -0.2297621 Z 1.319813 HeadPoint[1] X -0.003732742 Y -0.02388078 Z 1.277723 ... 

Ces chiffres semblent corrects en fonction de la configuration. Les FeaturePoints ne s’impriment qu’une seule fois, mais les points de tête s’impriment en continu lorsque trackSucceeded. Les valeurs FeaturePoint sont-elles relatives au sharepoint tête?