dlib库-人脸检测

一、介绍

dlib库是一个适用于C++和Python的第三方库。包含机器学习、计算机视觉和图像处理的工具包,被广泛的应用于机器人、嵌入式设备、移动电话和大型高性能计算环境。是开源许可用户免费使用。

二、与OpenCv对比

OpenCV优缺点:
优点

  • 1)可以在CPU上实时工作;
  • 2)简单的架构;
  • 3)可以检测不同比例的人脸。

缺点

  • 1)会出现大量的把非人脸预测为人脸的情况;
  • 2)不适用于非正面人脸图像;
  • 3)不抗遮挡。
    dlib优缺点:
    优点
  • 1)适用于正面和略微非正面的人脸;
  • 2)语法极简单
  • 3)再小的遮挡下仍可工作。

缺点

  • 1)不能检测小脸,因为它训练数据的最小人脸尺寸为80×80,较小尺寸的人脸数据需自己训练检测器;
  • 2)边界框通常排除前额的一部分甚至下巴的一部分;
  • 3)不适用于侧面和极端非正面,如俯视或仰视。

三、dlib库安装

1.直接安装

我们可以直接通过cmd命令打开命令提示符,输入pip命令安装,如下:
pip install dlib –i 镜像地址
这种方法可能会导致出现以下错误:
在这里插入图片描述
所以我们可以使用另一种方法安装。

2.dlib库whl文件进行安装

首先我们需要下载与你的Python版本相匹配的dlib预编译wheel文件(.whl),然后使用pip进行安装。
这里为大家提供了cp37~cp311对应的wheel文件,通过链接: https://pan.baidu.com/s/1ElVfQ9oEtXkkEuftftQ-jA?pwd=8yzf 提取码: 8yzf 获取。获取对应的whl文件后,在对应文件夹搜索框上面使用cmd打开命令提示符,使用pip命令加上对应whl文件即可。如下:
在这里插入图片描述

四、代码实现

import cv2  
import dlib  
  
# 获取正面人脸检测器
detector = dlib.get_front_face_detector()  
  
# 读取图片  
img = cv2.imread('rljc2.png')  
  
# 检查图片是否成功加载  
if img is None:  
    print("Error: Unable to load image.")  
    exit()  
  
# 图片翻转  
img = cv2.flip(img, 1)  
  
# 转换为灰度图  
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  
  
# 检测人脸  
faces = detector(gray, 0)  
  
# 在图片上绘制人脸框  
for face in faces:  
    x1 = face.left()  
    y1 = face.top()  
    x2 = face.right()  
    y2 = face.bottom()  
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)  
  
# 显示图片  
cv2.imshow('a', img)  
  
# 等待按键事件,如果按下ESC键(ASCII码为27),则退出循环(虽然这里没有循环,但为未来扩展保留)  
while True:  
    if cv2.waitKey(1) == 27:  
        break  
  
# 销毁所有窗口  
cv2.destroyAllWindows()

这里我们通过dlib获取正面人脸检测器,然后检测传入图片检测人脸,最后绘制 图像框并显示图片,因为dlib库的边界框通常排除前额的一部分甚至下巴的一部分,所以显示结果会排除部分特征,如下图:
在这里插入图片描述

五、总结

dlib库是一个功能强大且易于使用的机器学习库,广泛应用于计算机视觉和图像处理领域。通过掌握dlib库的使用方法和技巧,开发者可以更加高效地实现各种机器学习和计算机视觉任务。

猜你喜欢

转载自blog.csdn.net/2301_77698138/article/details/142991220