我有示例代码(WebcamFacePose),该示例代码取自here。现在,我想找出右眼和左眼的欧几里得距离。我已经习惯了下面的方法来找到两点之间的距离。
double A = Math.Sqrt((Math.Pow(Math.Abs(lines[37].Point1.X - lines[41].Point1.X), 2) + Math.Pow(Math.Abs(lines[37].Point1.Y - lines[41].Point1.Y), 2)));
但是最终的EAR值不正确。
我正在使用下面的C#代码获取形状点,
using (var cimg = Dlib.LoadImageData<RgbPixel>(array, (uint)temp.Height, (uint)temp.Width, (uint)(temp.Width * temp.ElemSize())))
{
// Detect faces
var faces = detector.Operator(cimg);
// Find the pose of each face.
var shapes = new List<FullObjectDetection>();
for (var i = 0; i < faces.Length; ++i)
{
var det = poseModel.Detect(cimg, faces[i]);
shapes.Add(det);
}
// Display it all on the screen
win.ClearOverlay();
win.SetImage(cimg);
var lines = Dlib.RenderFaceDetections(shapes);
win.AddOverlay(lines);
foreach (var line in lines)
line.Dispose();
}
}
我也有C ++工作代码,
double compute_EAR(std::vector<cv::Point> vec)
{
double a = cv::norm(cv::Mat(vec[1]), cv::Mat(vec[5]));
double b = cv::norm(cv::Mat(vec[2]), cv::Mat(vec[4]));
double c = cv::norm(cv::Mat(vec[0]), cv::Mat(vec[3]));
//compute EAR
double ear = (a + b) / (2.0 * c);
return ear;
}
但是我不知道如何将其转换为C#以获得EAR值。
所以有人可以帮助我在C#中找到两只眼睛的EAR值吗?
谢谢。