仅使用dlib无法在iPhone照片上进行面部检测

2024-09-20 22:21:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用dlib库检测人脸,在Python和DotNet包装器上进行测试。两者都产生了同样奇怪的问题:从互联网上获取的图像质量差(图像质量低、光线差等),几乎总是被检测到,而从我的iPhone上拍摄的高质量/光线的照片几乎从未被检测到

我完全确信,在我的iPhone上拍摄的人脸比从互联网上拍摄的人脸质量更高,但无论我改变iPhone照片的灯光和相机角度多少次,结果总是一样的。偶尔会检测到iPhone人脸,而绝大多数完全可以接受的人脸照片都未被检测到。我完全不知所措,任何想法都很受欢迎

下面是我相对简单的代码示例

from face_recognition import load_image_file, face_locations

faces = face_locations(load_image_file("foo.jpg"))
face_detected = len(faces) >= 1

Tags: 图像image质量load互联网照片file人脸
2条回答

你也可以试试deepface吗

#!pip install deepface
from deepface import DeepFace
img = DeepFace.detectFace("foo.jpg")

它实际上包含了几个人脸检测器。它的默认检测器是mtcnn,但您仍然可以设置所需的检测器

detectors = ['mtcnn', 'opencv', 'ssd', 'dlib']
DeepFace.detectFace("foo.jpg", detector_backend = detectors[0])

如果无法检测到面,detectFace函数将返回异常

我想出了一个解决方案,我想我会和大家分享它,以防将来有人遇到这个问题。将所有图像转换为灰度,修复了数据集中所有未检测到的人脸。我用C#而不是Python编写了这篇文章,但无论如何我都会与大家分享。可以使用Emgu.CV库和以下代码完成此操作:

Image<Bgr, byte> emguImage = new Image<Bgr, byte>(path_to_image);
Image<Gray, byte> grayscaleEmguImage = emguImage.Convert<Gray, byte>().Clone();
Bitmap grayscaleBitmapImage = grayscaleEmguImage.ToBitmap();

它很快而且很有效

相关问题 更多 >

    热门问题