使用OpenCV(C ++ / Python)进行人脸交换
--

图3.面部对齐。左:检测到面部标志和凸包。中:凸包上的点的Delaunay三角剖分。右:通过仿射扭曲三角形进行面部对齐。
1 人脸对齐
1.1 脸部地标检测
两个脸部的几何形状非常不同,因此我们需要对源脸部进行一些扭曲以使其覆盖目标脸部,但是我们还想确保我们不会使其扭曲而无法识别。
首先使用dlib在两个图像上检测面部标志。但是,与“ 脸部变形”不同,我们不也不应使用所有点进行脸部对齐。
我们只需要如图所示的人脸外边界上的点即可。
1.2 查找凸包
在计算机视觉和数学术语中,点或形状的集合的边界称为“包”。没有任何凹面的边界称为“凸壳”。
在图3中,左图显示了使用dlib检测到的脸部界标为红色,点的凸包显示为蓝色。
一组点的凸包可以使用OpenCV的concealHull函数来计算。
python:
# points is numpy array of points obtained
# using dlib.
hullIndex = cv2.convexHull(points, returnPoints = False)
# hullIndex is a vector of indices of points
# that form the convex hull.
c++:
vector<int> hullIndex;
// points is of type vector<Point2f> obtained
// using dlib.
convexHull(points, hullIndex, false, false);
// hullIndex is a vector of indices of points
// that form the convex hull.
1.3 Delaunay三角剖分
对齐的下一步是对凸包上的点进行Delaunay三角剖分。在图3的中间图像中显示了三角剖分。
这使我们可以将脸部分成较小的部分。我以前的文章详细解释了Delaunay三角剖分,请参见此处
1.4 仿射扭曲三角形
进行面对齐的最后步骤,以考虑源脸部和目标脸部之间的对应三角形,并将源脸部三角形仿射扭曲到目标脸部上。
有关我的脸部变形的更多信息,请参见我的文章。
但是,如您在图3的右图中所看到的,对齐面部并将一个面部拍打在另一面部的上方看起来并不自然。
由于两个图像之间的光照和肤色差异,可以看到接缝。下一步显示如何无缝地组合两个图像。
2 无缝克隆
好的技术思想就像是魔术。优秀的魔术师结合了物理,心理学和良好的旧手技巧来达到令人难以置信的效果。
仅图像扭曲看起来就很糟糕。将其与Seamless Cloning结合使用,结果是神奇的!我写了一篇文章,解释的细节在这里。
这是OpenCV 3中的一项功能,可让您无缝地将源图像的一部分(由掩码标识)克隆到目标图像上。
python:
output = cv2.seamlessClone(src, dst, mask, center, cv2.NORMAL_CLONE)
c++:
seamlessClone(src, dst, mask, center, output, NORMAL_CLONE);

上面用法中的src图像如图3所示。(右图)。的DST图像是其上我们要混合源图像(即特朗普的图像)的图像。
通过使用fillConvexPoly用白色填充凸包来计算蒙版,并且中心是包含蒙版的边界框的中心。
总结:
脸部地标检测(Facial Landmark) 点
查找凸包(Convex Hull ) 面
Delaunay三角剖分(Delaunay Triangulation )
仿射扭曲三角形(源脸部三角形仿射扭曲到目标脸部)(Affine warp triangles )
无缝克隆(Seamless Cloning)
--
使用OpenCV(C ++ / Python)进行人脸交换的更多相关文章
- 使用OpenCV和Python进行人脸识别
介绍 人脸识别是什么?或识别是什么?当你看到一个苹果时,你的大脑会立刻告诉你这是一个苹果.在这个过程中,你的大脑告诉你这是一个苹果水果,用简单的语言来说就是识别.那么什么是人脸识别呢?我肯定你猜对了. ...
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...
- 手把手教你如何用 OpenCV + Python 实现人脸识别
下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like 通俗的来讲,就是作为人脸特 ...
- Python使用OpenCV实现简单的人脸检测
文章目录: OpenCV安装 安装numpy 安装opencv OpenCV使用 OpenCV测试 效果图: 注意: 图片人脸检测 程序要求: 技术实现思路 注意 本文使用的环境是:Windows+P ...
- 手把手教你如何用 OpenCV + Python 实现人脸检测
配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like Haar-like百科释义.通俗的来讲 ...
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- OpenCV Facial Landmark Detection 人脸关键点检测
Opencv-Facial-Landmark-Detection 利用OpenCV中的LBF算法进行人脸关键点检测(Facial Landmark Detection) Note: OpenCV3.4 ...
- (原)windows8.1上使用opencv for python
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6204100.html 参考网址: http://www.docs.opencv.org/master/ ...
- 【从零学习openCV】IOS7根据人脸检测
前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app.总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...
- Ubuntu16.04安装opencv for python/c++
Ubuntu16.04安装opencv for python/c++ 网上关于opencv的安装已经有了不少资料,但是没有一篇资料能让我一次性安装成功,因此花费了大量时间去解决各种意外,希望这篇能给一 ...
随机推荐
- 【DRF框架】认证组件
DRF框架的认证组件 核心代码: self.perform_authentication(request) 框架自带模块: from rest_framework import a ...
- go工程组织规范
go编码以workspace形式管理,一个workspace包含所有的Go编码,包含多个版本控制仓库(例如使用git管理的多个仓库).每个仓库包含多个包package,每个package是一个单独的路 ...
- Django分表操作、聚合及FQ方法
聚合 aggregate(*args, **kwargs) # 计算所有图书的平均价格 from django.db.models import Avg Book.objects.all().aggr ...
- JS知识图谱
- SpringCloud2.0 Config 分布式配置中心 基础教程(十一)
Spring Cloud Config 简介 Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应用程序的外 ...
- test20190803 夏令营NOIP训练19
60+100+0=160 贪婪大陆 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败--人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前 ...
- test20190802 夏令营NOIP训练18
今天的题很有难度啊.然而我10:40才看题-- 高一学堂 在美丽的中山纪念中学里面,有一座高一学堂.所谓山不在高,有仙则名:水不在深,有龙则灵.高一学堂,因为有了yxr,就成了现在这个样子 = =. ...
- 创建型模式(过渡模式) 简单工厂模式(Simple Factory)
简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern) 是通过专门定义一个类来负责创建其他类的 ...
- java 利用反射调用静态方法的示例
内容简介 主要介绍使用反射的机制来调用执行类中的静态方法. 静态方法 public class GisUtil { private final static Logger logger = Logge ...
- dede5.7评论框不显示,文章页表情不显示,解决办法
dede5.7评论框不显示,文章页表情不显示,解决办法 进入dede后台,系统-系统基本参数-其它选项,找到模板引擎禁用标签,去掉里面的php,如图 进入dede模板目录,默认是/templets/d ...