Python+CV2+dlib 图像旋转达到放平人脸作用

出发点:看了很多有关旋转人脸的,多为使用c语言实现的,结合前辈思想使用python实现了一版。

注意:本人使用的是jupyter notebook边写边检查, 所以使用IDE的童鞋记得将我函数定义代码和测试代码分开,测试代码放到

“if __name__=='__main__'”中,可以规范点。

流程为:

1.获得人脸特征点

2.获得左右眼角

3.计算左右眼角坐标差值dx,dy然后求artan值转换为弧度angle

4.选定鼻尖为人脸中心center

5.创建旋转矩阵

6.warpAffine旋转图片

import cv2
import dlib
import numpy as np
import math

shape_path = './shape_predictor_68_face_landmarks.dat'  # 特征检测器模型路径
img = cv2.imread('./test/test.jpg')  # 测试图片
detector = dlib.get_frontal_face_detector()  # 人脸检测器
predictor = dlib.shape_predictor(shape_path)  # 人脸特征检测器

# 用来取得特征点集合
def getRes(img):
    # 在这里需要将BGR格式颜色通道转为RGB,因为dlib默认使用RGB图片
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    res = detector(img, 1)  # 检测结果
    for idx,face in enumerate(res):  # 遍历检测结果中的人脸
        shape =
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值