Example #1
0
 private void DetectedData(DetectedData data)
 {
     Clear();
     lock (_lock)
     {
         Confidence = data.Confidence;
         FaceScale  = data.Scale;
         OverlayLines.AddRange(data.BoxLines);
         OverlayPoints.AddRange(data.Landmarks);
         OverlayPointsVisibility.AddRange(data.Visibilities);
         OverlayEyePoints.AddRange(data.EyeLandmarks.Select(l => new Point(l.Item1, l.Item2)));
         GazeLines.AddRange(data.GazeLines);
     }
 }
Example #2
0
        private void UpdateLabelsWithData(DetectedData data)
        {
            if (data.Pose.Count == 0)
            {
                return;
            }

            var pitch = (data.Pose[3] * 180 / Math.PI) + 0.5;
            var yaw   = (data.Pose[4] * 180 / Math.PI) + 0.5;
            var roll  = (data.Pose[5] * 180 / Math.PI) + 0.5;

            YawLabel.Content   = $"{Math.Abs(yaw):0}°";
            RollLabel.Content  = $"{Math.Abs(roll):0}°";
            PitchLabel.Content = $"{Math.Abs(pitch):0}°";

            YawLabelDir.Content   = yaw > 0 ? "Right" : yaw < 0 ? "Left" : "Straight";
            PitchLabelDir.Content = pitch > 0 ? "Down" : pitch < 0 ? "Up" : "Straight";
            RollLabelDir.Content  = roll > 0 ? "Left" : roll < 0 ? "Right" : "Straight";

            XPoseLabel.Content = $"{data.Pose[0]:0} mm";
            YPoseLabel.Content = $"{data.Pose[1]:0} mm";
            ZPoseLabel.Content = $"{data.Pose[2]:0} mm";
        }
Example #3
0
        public DetectedData ExtractData(LandmarkData landmarkData)
        {
            var confidence = FaceModel.GetConfidence();
            var pose       = new List <float>();

            FaceModel.GetPose(pose, landmarkData.FrameData.Fx, landmarkData.FrameData.Fy, landmarkData.FrameData.Cx, landmarkData.FrameData.Cy);

            var data = new DetectedData
            {
                Scale      = FaceModel.GetRigidParams()[0],
                Pose       = pose,
                Confidence = confidence < 0 ? 0 : confidence > 1 ? 1 : confidence
            };

            if (DetectionSettings.CalculateLandmarks)
            {
                data.Visibilities = FaceModel.GetVisibilities();
                data.Landmarks    = FaceModel.CalculateAllLandmarks().Select(p => new Point(p.Item1, p.Item2)).ToList();
            }

            if (DetectionSettings.CalculateEyes)
            {
                data.EyeLandmarks = FaceModel.CalculateVisibleEyeLandmarks();
            }

            if (DetectionSettings.CalculateGazeLines)
            {
                data.GazeLines = GazeAnalyzer.CalculateGazeLines(landmarkData.FrameData.Fx, landmarkData.FrameData.Fy, landmarkData.FrameData.Cx, landmarkData.FrameData.Cy);
            }

            if (DetectionSettings.CalculateBox)
            {
                data.BoxLines = FaceModel.CalculateBox(landmarkData.FrameData.Fx, landmarkData.FrameData.Fy, landmarkData.FrameData.Cx, landmarkData.FrameData.Cy);
            }

            return(data);
        }