前言:所使用图片并无盈利等目的,如有侵犯他人肖像权请联系删除。
当当当当,第三期来廖!接上一期在线会议中人脸面部轮廓图像提取(二)——HOG人脸面部轮廓图像特征提取,介绍完 HOG 特征提取我们继续学习Dlib库提取特征叭!

在我们检测到人脸区域之后,接下来要研究的问题是获取到不同的脸部的特征,以区分不同人脸,即人脸特征检测(facial feature detection)。它也被称为人脸特征点检测( facial landmark detection )。
人脸特征点通常会标识出脸部的下列数个区域:
检测人脸特征点,分为如下两步:
第一步:在人脸区域内检测出人脸关键特征;
对于第二步,我们使用Dlib中的特征点检测。
Dlib中使用的人脸特征检测的原理来自2014年,由Vahid Kazemi和 Josephine Sullivan在论文 《One Millisecond Face Alignment with an Ensemble of Regression Trees》中提出的人脸特征点评估的方法。
论文中方法的主要思想是:
使用级联回归树(ensemble of regression trees, ERT),即使用级联回归因子,基于梯度提高学习的回归树方法。该方法首先需要使用一系列标定好的人脸图片作为训练集,然后会生成一个模型。使机器学习模型能够找出任何脸上的这些特征点。
简要的分为以下三步:
Dlib提供两种 人脸检测 模型:


68点人脸特征图
detector = dlib.get_frontal_face_detector()
faces = detector(image, 1)
返回的faces为识别出的脸部数组。
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
shape = predictor(image, face)
import cv2
import dlib
# 读取图片
img_path = "C.jpg"
img = cv2.imread(img_path)
n = 2
img = cv2.resize(img, (0, 0), fx=1/n, fy=1/n, interpolation=cv2.INTER_NEAREST)
# 转换为灰阶图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 正向人脸检测器将图像
detector = dlib.get_frontal_face_detector()
# 使用训练好的68个特征点模型
predictor_path = "shape_predictor_68_face_landmarks.dat"
predictor = dlib.shape_predictor(predictor_path)
# 使用检测器来检测图像中的人脸
faces = detector(gray, 1)
# 打印结果
print("人脸数: ", len(faces))
for i, face in enumerate(faces):
print("第", i+1, "个人脸的矩形框坐标:\n","left:", face.left(), "right:", face.right(), "top:", face.top(), "bottom:", face.bottom())
# 获取人脸特征点
shape = predictor(img, face)
print("第", i+
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删