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

人脸检测模型输出每个人脸的目标框坐标以及5个关键点坐标。
二、利用5个特征点进行人脸对齐(纠正)
人脸1:

人脸1纠正结果:

人脸2:

人脸2纠正后结果:

人脸3:

人脸3纠正后结果:

三、人脸对齐(纠正)代码示例:
import cv2
import numpy as np
import skimage.transformST_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 imsgekeypoint: 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 transformationst.estimate(keypoint, st_kp) # calculate the matrix of affine transformationalign_face = cv2.warpAffine(image, st.params[0:2, :], align_size, flags=cv2.INTER_LINEAR, borderValue=0.0) # face alignreturn align_face
相关文章:
基于人脸5个关键点的人脸对齐(人脸纠正)
摘要:人脸检测模型输出人脸目标框坐标和5个人脸关键点,在进行人脸比对前,需要对检测得到的人脸框进行对齐(纠正),本文将通过5个人脸关键点信息对人脸就行对齐(纠正)。 一、输入图像…...
vue3中两个el-select下拉框选项相互影响
vue3中两个el-select下拉框选项相互影响 1、开发需求2、代码2.1 定义hooks文件2.2 在组件中使用 1、开发需求 如图所示,在项目开发过程中,遇到这样一个需求,常规时段中选中的月份在高峰时段中是禁止选择的状态,反之亦然。 2、代…...
博弈论——反应函数
反应函数 1 引言 谢老师的《经济博弈论》书中对反应函数并没有给出一般笼统的定义,而是将其应用与古诺模型并给出了相关解释:反应函数是指在无限策略的古诺博弈模型中,博弈方的策略有无限多种,因此各个博弈方的最佳对策也有无限…...
UE5读取json文件
一、下载插件 在工程中启用 二、定义读取外部json文件的函数,参考我之前的文章 ue5读取外部文件_艺菲的博客-CSDN博客 三、读取文件并解析为json对象 这里Load Text就是自己定义的函数,ResourceBundle为一个字符串常量,通常是读取的文件夹…...
Vue中的插槽--组件复用,内容自定义
插槽 文章目录 插槽插槽-默认插槽插槽-后备内容(设置默认值)插槽-具名插槽插槽–作用域插槽 插槽-默认插槽 作用:让组件内部的一些结构支持自定义 需求:要在页面中显示一个对话框,封装成一个组件(对话框有很多功能是类…...
完全指南:mv命令用法、示例和注意事项 | Linux文件移动与重命名
文章目录 mv命令使用指南1. 简介什么是mv命令?mv命令的作用和功能是什么? 2. 基本用法基本语法格式如何移动文件?如何重命名文件?如何移动和重命名目录? 3. 高级用法使用通配符进行批量移动和重命名使用选项进行文件移…...
gitee生成公钥和远程仓库与本地仓库使用验证
参考文档: https://help.gitee.com/base/account/SSH%E5%85%AC%E9%92%A5%E8%AE%BE%E7%BD%AE(1)通过命令ssh-keygen 生成SSH key -t key类型 -c注释 ssh-keygen -t ed25519 -C "Gitee SSH Key" (2)按三次回车 (3)查看生成的 SSH 公钥和私钥: …...
请求后端接口413
当在进行HTTP请求时出现"413 Request Entity Too Large"错误时,通常是因为请求体的大小超过了服务器的配置限制。这个错误提示表明服务器拒绝接受过大的请求。 此时一般还未到后端服务,是被后端的ngnix代理服务器拦截的,所以可以检…...
HarmonyOS之 开发环境搭建
一 鸿蒙简介: 1.1 HarmonyOS是华为自研的一款分布式操作系统,兼容Android,但又区别Android,不仅仅定位于手机系统。更侧重于万物物联和智能终端,目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS,…...
QTC++ day12
注册登录界面 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QIcon> #include <QPushButton> #include <QLineEdit> #include <QLabel> #include <QDebug> #include <QMessageBox>//消息对话框类 #inc…...
Vue3中使用Proxy API取代defineProperty API的原因
目录 一、前言 二、defineProperty API的限制和问题 三、Proxy API的优势和特性 四、Vue3.0中使用Proxy API的原因 五、Proxy API的局限性和注意事项 一、前言 Vue3.0是Vue.js框架的最新版本,它在底层进行了许多重要的改进。其中最引人注目的变化之一是它转而…...
构建工具Webpack简介
一、构建工具 当我们习惯了Node中使用ES模块化编写代码以后,用原生的HTML、CSS、JS这些东西会感觉到各种不便。比如:不能放心的使用模块化规范(浏览器兼容性问题)、即使可以使用模块化规范也会面临模块过多时的加载问题。 这时候…...
Docker部署单点Elasticsearch与Kibana
一 、 创建网络 因为需要部署kibana容器,因此需要让es和kibana容器互联。这里创建一个网络: docker network create es-net # 创建一个网络名称为:es-net 二 、拉取并加载镜像 方式一 docker pull elasticsearch:7.12.1 版本为elasticsearch的7…...
opencv实现仿射变换和透射变换
##1, 什么是仿射变换? 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#设置字体 from pylab import mpl mpl.rcParams[font.sans-serif] [SimHei]#图像的读取 img cv.imread("lena.png")#仿射变换 row…...
抖音seo账号矩阵源码系统
1. 开通多个抖音账号,并将它们归纳为一个账号矩阵系统。 2. 建立一个统一的账号管理平台,以便对这些账号进行集中管理,包括账号信息、内容发布、社区交互等。 3. 招募专业的运营团队,对每个账号进行精细化运营,包括内…...
性能优化之防抖
方法1:利用lodash库提供的防抖来处理 方法2:手写一个防抖函数来处理 需求:鼠标在盒子上移动,鼠标停止500ms之后,里面的数字才会变化1 方法一:利用lodash库实现防抖 <!DOCTYPE html> <html lang&…...
postgresql用户和角色
postgresql用户和角色 简述创建角色角色属性登录特权超级用户创建数据库创建角色启动复制密码修改角色属性 对象授权撤销授权组和成员删除角色 简述 PostgreSQL 通过角色的概念来控制数据库的访问权限。角色又包含了两种概念,具有登录 权限的角色称为用户ÿ…...
设计模式之备忘录模式
文章目录 游戏角色状态恢复问题传统方案解决游戏角色恢复传统的方式的问题分析备忘录模式基本介绍游戏角色恢复状态实例备忘录模式的注意事项和细节 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大…...
大数据Flink(八十八):Interval Join(时间区间 Join)
文章目录 Interval Join(时间区间 Join) Interval Join(时间区间 Join) Interval Join 定义(支持 Batch\Streaming):Interval Join 在离线的概念中是没有的。Interval Join 可以让一条流去 Jo…...
数字IC笔试千题解--判断题篇(五)
前言 出笔试题汇总,是为了总结秋招可能遇到的问题,做题不是目的,在做题的过程中发现自己的漏洞,巩固基础才是目的。 所有题目结果和解释由笔者给出,答案主观性较强,若有错误欢迎评论区指出,资料…...
用Arduino Nano和MPU6050做个‘防抖云台’:PID调参实战,告别手抖视频
用Arduino Nano和MPU6050打造防抖云台:从硬件搭建到PID调参全指南 在短视频和Vlog盛行的时代,稳定的画面已经成为内容创作者的刚需。专业级稳定器动辄上千元的价格让许多入门玩家望而却步。其实,只需一块Arduino Nano开发板、一个MPU6050传感…...
统信UOS/麒麟KYLINOS用户看过来:除了Termius,这款开源免费的SSH工具electerm更香!
国产操作系统用户的SSH工具新选择:electerm深度体验报告 对于统信UOS和麒麟KYLINOS用户而言,远程服务器管理是日常工作中的高频需求。Termius作为老牌SSH工具确实表现不俗,但今天我们要探讨的electerm,或许能给你带来意想不到的惊…...
大模型在软件测试中的应用:从测试用例生成到bug检测
在软件行业高速发展的今天,软件规模持续扩大、复杂度不断攀升,软件测试作为保障软件质量的关键环节,面临着前所未有的挑战。传统测试方法在应对海量需求、复杂业务逻辑以及快速迭代的开发模式时,逐渐暴露出效率低下、覆盖不全等问…...
别只当普通Office用!挖掘WPS教育考试版里那些被忽略的‘学习神器’
解锁WPS教育考试版的隐藏技能:从工具到学习伙伴的进阶指南 在备考的漫长征途中,我们常常陷入"工具只是工具"的思维定式。WPS教育考试版远不止是一个文档编辑器,它更像是一位24小时待命的学习助手,只是大多数人从未真正…...
STM32按键状态机:从消抖到复杂事件处理的嵌入式编程范式
1. 项目概述:从“按键抖动”到“状态机思维”的跨越在嵌入式开发,尤其是基于STM32这类MCU的项目中,按键处理是几乎每个项目都绕不开的基础功能。很多新手朋友在拿到开发板,点亮第一个LED后,下一步往往就是尝试用按键来…...
置信区间不只是统计学:如何用它给你的深度学习模型预测‘上保险’?(以目标检测为例)
置信区间在深度学习中的实战应用:为目标检测模型预测加装"安全气囊" 当自动驾驶汽车在雨中识别模糊的交通标志时,当医疗AI系统标记疑似肿瘤区域时,模型输出的不仅是"是什么",更关键的是"有多确定"。…...
无人机避障新思路:拆解EGO-Planner如何用B样条和“斥力点”省掉ESDF
无人机避障新思路:拆解EGO-Planner如何用B样条和“斥力点”省掉ESDF 当四旋翼无人机在复杂环境中穿行时,传统的避障算法往往需要构建完整的欧几里得符号距离场(ESDF),这就像要求无人机在飞行前必须绘制整个城市的等高线…...
Datasheet学习4(Audio)(TODO)
(TODO)...
革命性AI背景移除:obs-backgroundremoval实现零绿幕专业级虚拟背景
革命性AI背景移除:obs-backgroundremoval实现零绿幕专业级虚拟背景 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地…...
如何用Python自动化脚本提升大麦网抢票成功率:完整配置指南
如何用Python自动化脚本提升大麦网抢票成功率:完整配置指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到周杰伦、五月天演唱会门票而烦恼吗?大麦网抢票脚本…...
