您当前的位置:首页 > 计算机 > 编程开发 > Python

【dlib库】进行人脸检测+人脸关键点检测+人脸对齐

时间:04-13来源:作者:点击数:

原图像:

在这里插入图片描述

1. 人脸检测

import cv2
import dlib
import matplotlib.pyplot as plt
# 获取图片
my_img = cv2.imread('my_img.jpg')
# BGR to RGB
my_img = cv2.cvtColor(my_img, cv2.COLOR_BGR2RGB)

# 使用特征提取器get_frontal_face_detector
detector = dlib.get_frontal_face_detector()

dets = detector(my_img, 1)

for det in dets:
    # 将框画在原图上
    # cv2.rectangle  参数1:图片, 参数2:左上角坐标, 参数2:左上角坐标, 参数3:右下角坐标, 参数4:颜色(R,G,B), 参数5:粗细
    my_img = cv2.rectangle(my_img, (det.left(),det.top()), (det.right(),det.bottom()), (0,255,0), 5)
    
# plt.figure(figsize=(5,5))
plt.imshow(my_img)
plt.show()
在这里插入图片描述

2. 人脸关键点检测

使用关键点模型需要提前下载此模型,并解压得到shape_predictor_68_face_landmarks.dat

下载地址:http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

# 人脸检测器
predictor = dlib.shape_predictor(r'./shape_predictor_68_face_landmarks.dat')

for det in dets:
    shape = predictor(my_img, det)
    # 将关键点绘制到人脸上
    for i in range(68):
        cv2.putText(my_img, str(i), (shape.part(i).x, shape.part(i).y), cv2.FONT_HERSHEY_DUPLEX, 0.3, (0, 255, 255), 2, cv2.LINE_AA)
        cv2.circle(my_img, (shape.part(i).x, shape.part(i).y), 1, (0, 0, 255))

plt.imshow(my_img)
plt.show()
在这里插入图片描述

3. 第三步、人脸对齐

# 人脸对齐
my_img = dlib.get_face_chip(my_img, shape, size = 150)
plt.imshow(my_img)
plt.show()
在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门