基于人脸5个关键点的人脸对齐(人脸纠正)

摘要:人脸检测模型输出人脸目标框坐标和5个人脸关键点,在进行人脸比对前,需要对检测得到的人脸框进行对齐(纠正),本文将通过5个人脸关键点信息对人脸就行对齐(纠正)。

一、输入图像就行人脸检测:

人脸检测模型输出每个人脸的目标框坐标以及5个关键点坐标。

二、利用5个特征点进行人脸对齐(纠正)

人脸1:

人脸1纠正结果:

人脸2:

人脸2纠正后结果:

人脸3:

人脸3纠正后结果:

三、人脸对齐(纠正)代码示例:

python 复制代码
import cv2
import numpy as np
import skimage.transform


ST_KEYPOINT = np.array(
    [
        [0.34191607, 0.46157411],
        [0.65653393, 0.45983393],
        [0.500225, 0.64050536],
        [0.37097589, 0.82469196],
        [0.63151696, 0.82325089]]
    , dtype=np.float32)


def get_aligned_face(image, keypoint, align_size):
    '''
    Args:
        image: origin imsge
        keypoint: five keypoints with shape of (5, 2)
        align_size: output size of (w, h), exp: (112, 112)
    Returns:
        aligned face with the size of align_size
    '''

    st_kp = ST_KEYPOINT * np.array(align_size)
    st = skimage.transform.SimilarityTransform()  # define the  function of affine transformation
    st.estimate(keypoint, st_kp)  # calculate the matrix of affine transformation
    align_face = cv2.warpAffine(image, st.params[0:2, :], align_size, flags=cv2.INTER_LINEAR, borderValue=0.0)  # face align
    return align_face
相关推荐
实名上网宋凯宣8 小时前
Django
后端·python·django
如若1239 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
砚底藏山河10 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
视觉小萌新10 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
薛定谔的猫-菜鸟程序员11 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
Ramble_Naylor13 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
Allen_LVyingbo13 小时前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
云和数据.ChenGuang13 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
我命由我1234515 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
青少儿编程课堂15 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛