```bash简单换脸、人脸对齐、关键点定位与画图有人将其进行中文翻译也有将其进行一定改编有以下两个案例:1.《川普撞脸希拉里(基于 OpenCV 的面部特征交换)-2》变脸变脸贴图:从这张: 这里写图片描述 变为这张: 这里写图片描述因为原文里面内容丰富,我觉得可以提取出很多有用的小模块,于是乎: .
提取一:关键点定位与画图import cv2
import dlib
import numpy
import sys
import matplotlib.pyplot as plt
SCALE_FACTOR = 1 # 图像的放缩比def read_im_and_landmarks(fname):im = cv2.imread(fname, cv2.IMREAD_COLOR)im = cv2.resize(im, (im.shape[1] * SCALE_FACTOR,im.shape[0] * SCALE_FACTOR))s = get_landmarks(im)return im, sdef annotate_landmarks(im, landmarks):'''人脸关键点,画图函数'''im = im.copy()for idx, point in enumerate(landmarks):pos = (point[0, 0], point[0, 1])cv2.putText(im, str(idx), pos,fontFace=cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,fontScale=0.4,color=(0, 0, 255))cv2.circle(im, pos, 3, color=(0, 255, 255))return im然后实践就是载入原图:im1, landmarks1 = read_im_and_landmarks('02.jpg')  # 底图
im1 = annotate_landmarks(im1, landmarks1)%matplotlib inline
plt.subplot(111)
plt.imshow(im1).
提取二:人脸对齐需要一张模板图来作为靠拢的对象图。# 人脸对齐函数
def face_Align(Base_path,cover_path):im1, landmarks1 = read_im_and_landmarks(Base_path)  # 底图im2, landmarks2 = read_im_and_landmarks(cover_path)  # 贴上来的图if len(landmarks1) == 0 & len(landmarks2) == 0 :raise ImproperNumber("Faces detected is no face!")if len(landmarks1) > 1 & len(landmarks2) > 1 :raise ImproperNumber("Faces detected is more than 1!")M = transformation_from_points(landmarks1[ALIGN_POINTS],landmarks2[ALIGN_POINTS])warped_im2 = warp_im(im2, M, im1.shape)return warped_im2这里的步骤是:提取模板图、对齐图的landmarks;通过transformation_from_points计算对齐图向模板图的转移矩阵M,变换矩阵是根据以下公式计算出来的;warp_im,将 im2 的掩码进行变化,使之与 im1 相符实践的话就是:FEATHER_AMOUNT = 19  # 匹配的时候,特征数量,现在是以11个点为基准点  11  15  17 Base_path = '01.jpg'
cover_path = '02.jpg'
warped_mask = face_Align(Base_path,cover_path).
提取三:换脸主要函数:def Switch_face(Base_path,cover_path):im1, landmarks1 = read_im_and_landmarks(Base_path)  # 底图im2, landmarks2 = read_im_and_landmarks(cover_path)  # 贴上来的图if len(landmarks1) == 0 & len(landmarks2) == 0 :raise ImproperNumber("Faces detected is no face!")if len(landmarks1) > 1 & len(landmarks2) > 1 :raise ImproperNumber("Faces detected is more than 1!")M = transformation_from_points(landmarks1[ALIGN_POINTS],landmarks2[ALIGN_POINTS])mask = get_face_mask(im2, landmarks2)warped_mask = warp_im(mask, M, im1.shape)combined_mask = numpy.max([get_face_mask(im1, landmarks1), warped_mask],axis=0)warped_im2 = warp_im(im2, M, im1.shape)warped_corrected_im2 = correct_colours(im1, warped_im2, landmarks1)output_im = im1 * (1.0 - combined_mask) + warped_corrected_im2 * combined_maskreturn output_im主要步骤:提取模板图、对齐图的landmarks;M,通过transformation_from_points计算对齐图向模板图的转移矩阵M;matrix([[   0.62876962,    0.20978991, -101.32973923],[  -0.20978991,    0.62876962,   79.11235991],[   0.        ,    0.        ,    1.        ]])mask,得到基于对齐图的掩膜,get_face_mask函数,获取 im2 的面部掩码,mask长成这样: 这里写图片描述warped_mask ,warp_im函数,将 im2 的掩码进行变化,使之与 im1 相符,跟上面的mask张一样(一个鼻子)combined_mask ,将二者的掩码进行连通(跟warped_mask 长一样)warped_im2 ,warp_im函数,第二次,将第二幅图像调整到与第一幅图像相符(对齐图片,斜了点)warped_corrected_im2 ,correct_colours函数,将 im2 的皮肤颜色进行修正,使其和 im1 的颜色尽量协调(类似下图)output_im 组合图像,获得结果实践:FEATHER_AMOUNT = 23Base_path = '03.jpg'
cover_path = '02.jpg'
output_im = Switch_face(Base_path,cover_path)
/*
项目二:平均脸新更新了一个平均脸的程序内容: 这里写图片描述py代码以及相关数据地址:https://www.learnopencv.com/wp-content/uploads/2016/05/FaceAverage.zip 最初博文地址:https://www.learnopencv.com/average-face-opencv-c-python-tutorial/ 中文翻译:http://blog.csdn.net/GraceDD/article/details/51382952 中文改编地址:《手把手:用OpenCV亲手给小扎、Musk等科技大佬们做一张“平均脸”(附Python代码)》在完成各个library的安装后。第一步:将要平均的照片放入faces文档,确保图片为jpg格式。第二步:在终端运行 python face_landmark_detection.py shape_predictor_68_face_landmarks.dat faces,并在程序运行结束后将所有faces文档中的文件复制到presidents文档中(如无法完成dlib安装,可略过该步骤,直接用文摘菌提供的素材)第三步:在终端运行 python faceAverage.py 这样就能看到制作成功的平均脸了!具体实现步骤:1.读入图 + 读入关键点信息 readPoints readImages2.平均脸的眼角位置(这样其他脸,按照眼睛位置对齐) eyecornerDst3.新的8个初始边界点 boundaryPts (为了后续做脸谱网络用的)4.设置初始平均脸 pointsAvg (随便找个脸68个关键点 + 8个初始点)5.根据眼睛位置,进行人脸初步对齐6.计算初始平均脸的脸谱网络76点(calculateDelaunayTriangles)7.根据脸谱网络二次人脸对齐 这里写图片描述 本案例中进行了两次对齐,眼睛对齐之后,通过Warp Triangles 再此对齐。*/

AI换脸-简单换脸、人脸对齐、关键点定位与画图相关推荐

  1. python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图

    这是一个利用dlib进行关键点定位 + opencv处理的人脸对齐.换脸.关键点识别的小demo.原文来自于<Switching Eds: Face swapping with Python, ...

  2. 第十七天 MTCNN 人脸检测+关键点定位 从0开始搭建 (补充中)

    源码下载:这里采用的MTCNND的tensorflow的源码 <作者是用caffe做的,下面的是修改版的> git clone https://github.com/AITTSMD/MTC ...

  3. dlib人脸对齐(python)

    1 68 和 51 关键点 2 人脸对齐 a 定位图片中的人脸 b 提取人脸区域的图片并保存 c 人脸对齐操作并保存 3 代码 import dlib import face_recognition ...

  4. 人脸系列:人脸检测、人脸关键点定位、人脸优选、人脸对齐、人脸特征提取、人脸跟踪、人脸活体检测

    一.一点想法 缘由:最近想整理下从事人脸方向的所有查阅过的论文,做过的相关实验,因为随着时间的推移,自己总会遗忘当初的一些想法,所以想好好整理下自己的学习笔记. 过程:本系列包括从人脸检测.人脸关键点 ...

  5. 跳过人脸检测和关键点定位,Facebook等提出实时3D人脸姿态估计新方法

    本文转载自机器之心. 来自 Facebook AI 和美国圣母大学的研究者提出了一种 6 自由度的实时 3D 人脸姿态估计技术,可以不依赖人脸检测和人脸关键点定位独立运行. 人脸检测是给照片中的每个人 ...

  6. 【换脸详细教程】手把手教你进行AI换脸:换脸流程及源码详解

    目录 1. 换脸基本原理 2 人脸检测及可视化 3. 人脸轮廓点检测及可视化 4. 人脸图像变换--仿射变换 5. 生成遮罩并直接替换人脸 6. 人脸颜色校正 最近AI换脸貌似比较火爆,就稍微研究了一 ...

  7. ai换脸h5换脸技术php,H5换脸视频背后的京东云技术十几秒内处理数万个换脸任务_联商网...

    眼下,基于人工智能技术的换脸软件火爆网络,换脸照片.换脸视频带给用户全新的互联网体验. 由人民日报新媒体联合京东AI.京东云推出的<70年,我是主角>H5换脸视频应用,在刚刚过去的国庆节期 ...

  8. 【星球知识卡片】换脸算法和人脸驱动都有哪些核心技术,如何对其长期深入学习...

    大家好,欢迎来到我们的星球知识小卡片专栏,本期给大家分享换脸算法和人脸驱动相关的资源. 作者&编辑 | 言有三 1 基于3D模型的换脸和人脸驱动 基于3D模型的换脸算法是一类非常经典的思路,它 ...

  9. (三)混合边缘AI人脸对齐

    目录 介绍 对齐算法 算法的实现 向检测器添加人脸对齐 修改对齐算法 下一步 在这里,我们将简要说明如何在Raspberry Pi上安装MTCNN.TensorFlow和Keras.然后我们在视频文件 ...

最新文章

  1. IMO班聊乔月猛:聊天不如聊工作
  2. 文献学习(part65)--稳健主成分聚类方法的构建及其比较研究
  3. js表单提交 php,JavaScript提交表单的几种方法
  4. 力扣面试题16.05.阶乘尾数
  5. 海思hi3518 移植live555 实现H264的RTSP播放
  6. linux基础(二)——linux各文件夹含义和作用
  7. 跑分cpu_跑分完爆骁龙 865?明年这些中端处理器真的要起飞
  8. 【NOIP提高组五校联考】挖金矿
  9. 联想小新Win11系统如何将新建标签页设置为Edge浏览器首页
  10. CPU、MPU、MCU和SOC还傻傻分不清楚 看这篇文章就够了
  11. Stacked Hourglass Networks for Human Pose Estimation
  12. 笔记1-----校园网进知网步骤
  13. GWAS数据分析专题
  14. NLP-文本处理:依存句法分析(主谓、动宾、动补...)【基于“分词后得到的词语列表A”+“A进行词性标注后得到的词性列表B”来进行依存句法分析】【使用成熟的第三方工具包】
  15. OA系统二十四:请假审批五:【点击“审批”后的审批弹出框】的后台逻辑;(审批结果提交的Dao层和Service层逻辑)
  16. AI数学基础(2)--- 霍夫丁不等式
  17. QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现
  18. Java入门 - 分支结构
  19. 《无处不在的安全,无孔不入的间谍》论企业信息泄漏防御
  20. 2022年4月23日,第16天

热门文章

  1. 保时捷卡宴Cayenne升级原厂360全景影像系统,行车更安全
  2. 操作系统实验—ucore Lab1
  3. html 苏宁首页,简单实现
  4. 如何更改VUE项目运行名称以及Logo图标
  5. 设计性思考维模型及步骤(上)
  6. MATLAB之易经卜卦程序+GUI
  7. 标准C函数库头文件、POSIX标准库头文件和Windows API函数库头文件说明
  8. (三十一:2021.01.12)MICCAI 2018 追踪之论文纲要(下)
  9. 消息中间件:选型分析。
  10. stm32f407固件库移植ucosii_v2.92.07