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); } }
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"; }
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); }