使用Dlib.Net(FaceRecognition.Net)检测人脸是否颠倒

c#

基本上,我正在尝试使用此库https://github.com/takuya-takeuchi/FaceRecognitionDotNet检查图像中的人脸是否颠倒。以下图为例

这是一张使用 FaceRecognition.Net 库成功检测到的图像。图像是颠倒的。我用蓝色椭圆标记了图像中的所有面部标志。

这是我遵循的方法

 // Finding faceparts
var faceparts = dparameters._FaceRecognition.FaceLandmark(dparameters.FCImage);

// Drawing Ellipses over all points got from faceparts

foreach(var facepart in faceparts) {
  foreach(var mypoint in facepart.Values) {
    foreach(var x in mypoint) {
      tempg.DrawEllipse(Pens.Blue, x.Point.X, x.Point.Y, 2, 2);
    }
  }
}

现在我正在通过比较嘴唇和眼点的最大 Y 坐标来检查图像是否旋转

var temp = faceparts.FirstOrDefault();
IEnumerable < FacePoint > lippoints;
temp.TryGetValue(FacePart.BottomLip, out lippoints);

IEnumerable < FacePoint > eyepoints;
temp.TryGetValue(FacePart.LeftEye, out eyepoints);

var lippoint = lippoints.Max(r => r.Point.Y);
var topeyepoint = eyepoints.Max(r => r.Point.Y);
if (lippoint > topeyepoint) {
  bool isinverted = true;
} else {
  bool isinverted = false;
}

问题是即使图像没有倒置,眼坐标也小于人脸坐标。这是因为检测到图像中的轮廓是假人脸。如何解决这个问题?

以上是使用Dlib.Net(FaceRecognition.Net)检测人脸是否颠倒的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>