У меня есть пример кода (WebcamFacePose), который взят из здесь . Теперь я хочу выяснить евклидово расстояние для правого и левого глаза. Я использовал метод ниже, чтобы найти расстояние между 2 точками.
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.
Так что любой может помочь мне найти значения EAR для обоих глаз в C #?
Заранее спасибо.