文章目录
- 一、介绍
- 二、与OpenCv对比
- 三、dlib库安装
- 1.直接安装
- 2.dlib库whl文件进行安装
- 四、代码实现
- 五、总结
一、介绍
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库的使用方法和技巧,开发者可以更加高效地实现各种机器学习和计算机视觉任务。