前言
Dlib库的使用。
一、Dlib是什么?
Dlib由C++编写,提供了和机器学习、数值计算、图模型算法、图像处理等领域相关的一系列功能。详细功能可以登录Dlib官网查看,我具体只使用了Dlib中对于图像处理部分。同时,与许多开源项目不同,该项目为每个类和功能提供完整而精确的文档,可以大大的降低我们使用的难度。
可以在Dlib官网对标注的地方进行解读,本文不详细描述。
关于预测训练的模型下载:
http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
百度网盘链接:shape_predictor_68_face_landmarks.rar
提取码:gnab
二、使用步骤
1.Dlib使用
pip install dlib==19.6.1
2.使用Dlib,可以查看Dlib中关于图像处理的实例CNN Face Detector、Face Detector、Face Landmark Detection、Face Recognition、Train Shape Predictor等
import dlib
import cv2
import os
import numpy as np
from PIL import Image
import imutils
from imutils import face_utils
'''shape_predictor_68_face_landmarks.dat在文章开头分享的百度云链接下载'''
face_landmark_path = 'D:\\WorkPlace\\Python\\test1\\Head_Pose\\shape_predictor_68_face_landmarks.dat'
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(face_landmark_path)
def face_recognition(img):
face_rects = detector(img, 0)
print(len(face_rects))
result = []
for index,face in enumerate(face_rects):
shape = predictor(img, face_rects[index])
shape = face_utils.shape_to_np(shape)
for (x, y) in shape:
cv2.circle(img, (x, y), 1, (0, 0, 255), -1)
def main():
image = cv2.imread("D:\\test\\my\\3.jpg")
try:
image.shape
except:
print("can not read image")
return
image = imutils.resize(image, width=640,height=480)
shape = face_recognition(image)
cv2.imshow("image",image)
cv2.waitKey(0)
if __name__ == '__main__':
main()
三、效果图
图为使用Dlib进行人脸特征点检测结果图:
图为使用Dlib进行人脸特征点位置和下标: