Dlib-人脸识别API说明

本文介绍如何使用dlib库进行人脸检测和对齐,包括get_frontal_face_detector函数的使用,以及get_face_chip_details函数对人脸关键点进行对齐的过程。详细解释了padding的概念及其对对齐图像的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. dlib.get_frontal_face_detector(PythonFunction,in Classes)

返回值是<class ‘dlib.dlib.rectangle’>,就是一个矩形

坐标为[(x1, y1) (x2, y2)]

可以通过函数的left,right,top,bottom方法分别获取对应的x1, x2, y1, y2值:

import cv2
import dlib
img = cv2.imread('my_image.jpg')
#返回一个人脸检测器
detector = dlib.get_frontal_face_detetor()
#这是从gray_img中返回人脸集合 
dets = detector(gray_img, 1)
#依次打印人脸的坐标
for i, d in enumerate(dets):
            print(type(d))
            y1 = d.top() if d.top() > 0 else 0
            y2 = d.bottom() if d.bottom() > 0 else 0
            x1 = d.left() if d.left() > 0 else 0
			x2 = d.right() if d.right() > 0 else 0

2. dlib::get_face_chip_details

人脸特征点对齐
dlib::get_face_chip_details(shape, 150, 0.25)
输入参数:shape为提取的人脸关键点,68个点
160为希望获取的对齐后的人脸大小
0.25是希望对人脸关键点区域进行padding的比例

2.1. padding的含义
dlib内部使用了51个人脸关键点进行对齐,如下图所示:
在这里插入图片描述
假设padding大小为0.25,padding之后的人脸关键点如下图所示:
在这里插入图片描述
上述两幅图像为同样大小,均为150*150,可以看到使用0.25为系数进行padding之后得到的人脸区域明显内收,得到了包含更大面部区域的对齐图像。

2.2 get_face_chip_details(shape, 150, 0.25)

函数的计算过程分为两部分:

首先对上述第二幅图所示的关键点中选取编号为10-37,43-47的关键点,也就是鼻子、左眼、右眼及上嘴唇部分的基准关键点,同时获取当前图像检测出的对应位置的关键点;
计算上述两个点集之间的相似变换矩阵,获取当前人脸图像相对于基准人脸间的旋转角度、缩放系数及应该获取的人脸区域的rect坐标。
注:相似变换及进行二维图像间的旋转、平移及缩放,在改变的过程中保持形状不变(大小方向和位置可变)的图形,也就是正方形变换完还是正方形,不会像仿射变换一样还可以变换为平行四边形。
在这里插入图片描述

3. extract_image_chip

函数的作用是根据计算出的相似变换的矩阵location,从原始图像img中得到变换后的图像块chip,使用interp插值方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值