许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  OpenCV变脸大法:让妖怪现原形(附源码实现)

OpenCV变脸大法:让妖怪现原形(附源码实现)

阅读数 4
点赞 0
article_banner

导读

本文将介绍如何使用OpenCV和Dlib实现人脸变形(人脸->人脸和人脸->动物脸)。(公众号:OpenCV与AI深度学习)

背景介绍

   我们常常在影视作品中看到一些 类  似的特效,比如一张人脸慢慢变成另一张人脸或者动物的脸,其中颇具代表性的就是《西游记》了,本文将使用OpenCV和Dlib来实现类似功能,效果如下:

OpenCV与AI深度学习

,赞19

   【1】人脸->人脸变化效果


   【2】人脸->动物脸变化效果


实现步骤

   【1】人脸面部特征点检测和动物脸面部特征点获取。人脸面部特征点基于Dlib检测获取,动物脸面部特征点手动标记得到(大家也可以自己训练网络获得)

   【2】Delaunay三角剖分。

   【3】扭曲图像和 alpha 混合。

   我们现在可以智能地融合这两个图像。如前所述,混合量将由一个参数控制α. 使用以下步骤创建变形。


  1. 在变形图像中查找特征点的位置:在变形图像中M,我们可以找到所有 80 个点的位置(Xm,Ym)使用等式(1)。 计算仿射变换:所以我们在图像 1 中有一组 80 个点,在图像 2 中有另一组 80 个点,在变形图像中有第三组 80 个点。我们也知道在这些点上定义的三角剖分。选取图像 1 中的一个三角形和变形图像中的相应三角形,并计算将图像 1 中三角形的三个角映射到变形图像中相应三角形的三个角的仿射变换。在 OpenCV 中,这可以使用getAffineTransform来完成。计算每对 149 个三角形的仿射变换。最后,重复图像2和变形图像的过程。 变形三角形:对于图像 1 中的每个三角形,使用上一步计算的仿射变换将三角形内的所有像素转换为变形图像。对图像 1 中的所有三角形重复此操作,以获得图像 1 的变形版本。类似地,获得图像 2 的变形版本。在 OpenCV 中,这是通过使用函数warpAffine来实现的。然而,warpAffine 接收图像而不是三角形。诀窍是计算三角形的边界框,使用 warpAffine 扭曲边界框内的所有像素,然后屏蔽三角形外的像素。三角形蒙版是使用fillConvexPoly创建的。确保在使用 warpAffine 时使用 blendMode BORDER_REFLECT_101。它比克林顿国务卿隐藏她的电子邮件更好地隐藏接缝。 Alpha 混合扭曲图像:在上一步中,我们获得了图像 1 和图像 2 的扭曲版本。这两个图像可以使用等式 ( 2 ) 进行 Alpha 混合,这是最终的变形图像。在我提供的代码中,扭曲三角形和 alpha 混合它们被合并在一个步骤中。

【4】面部变形结果。



视频动态效果:

参考链接与源码下载:

https://learnopencv.com/face-morph-using-opencv-cpp-python/#id1540306373

https://github.com/emreslyn/facial_landmark_and_image_morphing


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空