将不同的人脸检测器与 dlib 的地标检测器一起使用

Using a different face detector with dlib's landmark detector

我目前正在 python 使用 dlib 博客实现 Adrian Rosebrock 的视频眨眼检测器 post:

https://www.pyimagesearch.com/author/adrian/

基本上,我正在使用 dlib 的正面面部检测器并将面部周围的边界框传递给 dlib 的地标检测器,如图所示:

https://imgur.com/xvkfNeG

有时 dlib 的正面人脸检测器找不到人脸,但其他人脸检测器(如 OpenCV)会找到人脸。 Adrian 的博客听起来我可以使用 openCV 的正面检测器并传递边界框。

然而,当我这样做时,地标检测器无法正确找到人的眼睛,如这张照片所示:

https://imgur.com/3eAFFsQ

有什么方法可以使用带有 dlib 地标检测器的替代人脸检测器吗?或者我是否一直在使用 dlib 的正面检测器,因为不同的面部检测器传递的边界框对于 dlib 地标检测器来说会稍微不正确?

感谢您的宝贵时间!

检查您提供的图像,您似乎没有将正确的参数传递给绘图方法。结果看起来是正确的,只是颠倒了。

您可以使用自己的人脸检测器。你只需要使用 dlib.rectangle() 功能。首先,从您的人脸检测器中找到边界框,然后将它们映射到 dlib.rectangle(x,y,w,h).

然后您可以将此列表中的边界框传递给 predictor(img, rect)