一、dlib库简单描述
dlib是一个开源的C++库,提供了许多机器学习、图像处理和数据挖掘算法。它包含了大量的工具,可用于创建各种应用,如人脸识别、行人检测、特征检测和跟踪等。
dlib的一个优势是其提供的算法在性能上优于其他类似库。
二、代码实现
重要函数:dlib.cnn_face_detection_model_v1()
dlib库中用来读取模型的函数
代码
读取的人脸检测模型,GitHub可以搜到,都是别人训练好的
import cv2
import dlib
# 使用dlib库函数读取神经网络模型
detect = dlib.cnn_face_detection_model_v1('./mmod_human_face_detector.dat')
# 与opencv结合,读取图片
image = cv2.imread('./marvel.jpg')
faces = detect(image, 1) # 检测人脸
for face in faces:
# 计算每个人脸的位置
rect = face.rect # 获取人脸的位置坐标
x1 = rect.left() # 左上角x坐标
y1 = rect.top() # 左上角y坐标
x2 = rect.right() # 右下角x坐标
y2 = rect.bottom() # 右下角y坐标
# 绘制人脸对应的矩形框
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
# 展示图片
cv2.imshow('image', image)
cv2.waitKey(0)
# 运行完之后,关闭所有窗口
cv2.destroyAllWindows()
结果展示
注意:我使用的图片,脸部轮廓较小,没有体现出来,实际上这个方式绘制的人脸矩形框,会经常框不住人脸的下巴,算是一个小缺陷