从C#中的dlib形状点计算欧几里得距离?

时间:2018-11-07 07:14:26

标签: c# opencv3.0 dlib opencvsharp

我有示例代码(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值吗?

谢谢。

0 个答案:

没有答案