c# – 如何使用kinect检测人的视线?
发布时间:2020-12-15 18:00:56 所属栏目:百科 来源:网络整理
导读:目前,我正在使用Kinect的一个项目,这需要我知道那个人正在看的地方,为此我发现我需要找到那个人的视线. 现在,我可以找到人的骨骼的头部,但不能跟踪眼睛的运动. if (body.TrackingState == SkeletonTrackingState.Tracked){ Joint joint = body.Joints[JointT
目前,我正在使用Kinect的一个项目,这需要我知道那个人正在看的地方,为此我发现我需要找到那个人的视线.
现在,我可以找到人的骨骼的头部,但不能跟踪眼睛的运动. 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); } 这里的point.X和point.Y是骨架的头点. 解决方法
你看过FaceBasics示例项目吗?
我相信你想使用FaceFrameSource / FaceFrameReader(注意:不是HDFace).您将能够将面部方向作为Quarternion(并且示例项目将其转换为俯仰/偏角/滚动). 结合头骨的三维位置从骨架,我想你应该能够创建一个近似的视线. How-to Videos封面包括一些关于方向的信息(第5个视频,大约在18:20跳过 – 你的具体问题在21:49被问到). 编辑: Joint HeadJoint = this.bodies[faceIndex].Joints[JointType.Head]; ColorSpacePoint colorPoint = this.coordinateMapper.MapCameraPointToColorSpace(HeadJoint.Position); Point HeadPoint = new Point(colorPoint.X,colorPoint.Y); Point GazePoint = new Point(HeadPoint.X - Math.Sin((double)yaw * 0.0175) * 600,HeadPoint.Y - Math.Sin((double)pitch * 0.0175) * 600); drawingContext.DrawLine(new Pen(System.Windows.Media.Brushes.Yellow,5),HeadPoint,GazePoint); drawingContext.DrawEllipse(System.Windows.Media.Brushes.LightBlue,null,70,70); 编辑2:刚刚看到您的新评论,表示您使用SDK v1.8 – 我的答案是从v2.0开始,我不能说旧的SDK /传感器的不同之处. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |