Obecnie pracuję nad projektem wykorzystującym Kinect, który wymaga, abym wiedział, gdzie dana osoba patrzy w tym czasie, dla którego zorientowałem się, że muszę znaleźć linię wzroku tej osoby.Jak wykryć linię wzroku osoby korzystającej z kinect?
W tej chwili mogę znaleźć punkt głowy szkieletu osoby, ale nie mogę śledzić ruchu gałek ocznych.
if (body.TrackingState == SkeletonTrackingState.Tracked)
{
Joint joint = body.Joints[JointType.Head];
SkeletonPoint skeletonPoint = joint.Position;
// 2D coordinates in pixels
System.Drawing.Point point = new System.Drawing.Point();
if (_mode == CameraMode.Color)
{
// Skeleton-to-Color mapping
ColorImagePoint colorPoint = _sensor.CoordinateMapper.MapSkeletonPointToColorPoint(skeletonPoint, ColorImageFormat.RgbResolution640x480Fps30);
point.X = colorPoint.X;
point.Y = colorPoint.Y;
//Console.WriteLine(" X == " + point.X + " Y == " + point.Y);
X = (int)Math.Floor(point.X + 0.5);
Y = (int)Math.Floor(point.Y + 0.5);
}
// DRAWING...
Ellipse ellipse = new Ellipse
{
Fill = System.Windows.Media.Brushes.LightBlue,
Width = 20,
Height = 20
};
Canvas.SetLeft(ellipse, point.X - ellipse.Width/2);
Canvas.SetTop(ellipse, point.Y - ellipse.Height/2);
canvas.Children.Add(ellipse);
}
Tutaj point.X i point.Y są głównymi punktami szkieletu.
Nie odtworzyłem sondy Kinect na zawsze, ale czy nie jest możliwe wykrycie obrotu głowy? –
@JohnOdom jak myślisz, aby użyć rotacji głowy w moim problemie ... Nie mogę uzyskać twojego pomysłu .. chociaż mogę wymyślić zmiany w pozycji głowy przy użyciu współrzędnych szkieletu –
Myślałem o tym, czy jesteś w stanie śledzić rotacji głowy (0 stopni w obliczu kinetycznym) można określić "linię widzenia", sprawdzając, ile się obróciło. Przykład: jeśli głowica obróciła się o +45 stopni na zboczu (oś Z w górę/dół), użytkownik patrzy w lewo. To może brzmieć jak przesada, ale to wszystko, co mogę zaoferować, nie zaglądając do kinect SDK. –