【发布时间】:2021-08-26 05:19:28
【问题描述】:
基本上,我正在尝试使用此库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;
}
问题是即使图像没有倒置,眼睛坐标也小于人脸坐标。这是因为图像中检测到假脸。如何克服这个问题?
【问题讨论】:
标签: c# .net face-detection dlib