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

article/2025/9/4 18:52:58

导读

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

背景介绍

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

OpenCV与AI深度学习

,赞19

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

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

实现步骤

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

    【2】Delaunay三角剖分。

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

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

    1. 在变形图像中查找特征点的位置:在变形图像中M,我们可以找到所有 80 个点的位置(Xm,Ym)使用等式(1)。

    2. 计算仿射变换:所以我们在图像 1 中有一组 80 个点,在图像 2 中有另一组 80 个点,在变形图像中有第三组 80 个点。我们也知道在这些点上定义的三角剖分。选取图像 1 中的一个三角形和变形图像中的相应三角形,并计算将图像 1 中三角形的三个角映射到变形图像中相应三角形的三个角的仿射变换。在 OpenCV 中,这可以使用getAffineTransform来完成。计算每对 149 个三角形的仿射变换。最后,重复图像2和变形图像的过程。

    3. 变形三角形:对于图像 1 中的每个三角形,使用上一步计算的仿射变换将三角形内的所有像素转换为变形图像。对图像 1 中的所有三角形重复此操作,以获得图像 1 的变形版本。类似地,获得图像 2 的变形版本。在 OpenCV 中,这是通过使用函数warpAffine来实现的。然而,warpAffine 接收图像而不是三角形。诀窍是计算三角形的边界框,使用 warpAffine 扭曲边界框内的所有像素,然后屏蔽三角形外的像素。三角形蒙版是使用fillConvexPoly创建的。确保在使用 warpAffine 时使用 blendMode BORDER_REFLECT_101。它比克林顿国务卿隐藏她的电子邮件更好地隐藏接缝。

    4. 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


http://chatgpt.dhexx.cn/article/6UKUy59v.shtml

相关文章

利用CImg实现人脸融合

实验目的 输入两张人脸图像,根据Image Morphing的方法完成中间 11 帧的差值,得到一张人脸渐变的动图。 实验原理 Cross-Dissolve 交叉融合,对两张图片每个像素点按一定的比例进行混合, 公式:Imagehalfway (1-t) * …

《Real-Time Rendering 4th Edition》全文翻译 - 第4章 变换(下)4.5 ~ 4.7

第四章终于结束了……接下来会休息一段时间,祝各位五一劳动节快乐! …… 想了想还是不休息了,继续继续!! 实时渲染(第四版)Real-Time Rendering (Fourth Edition) 第4章 变换 Chapter 4 Tran…

osgEarth的Rex引擎原理分析(九十五)地形变形(Terrain morphing)

目标:(十二)中的问题14 morphing翻译为渐变(或混合)比较合适。 先看两张图,左图是使用了Image morphing,右图没有使用。morph的作用是使视域边界处的瓦片颜色和高程均匀变化。Image morphing控…

Image Warping-Morphing 实现人脸渐变

这学期选修了计算机视觉与模式识别这门课,刚上几周,感觉挺有趣的。 课程上到Image Warping & Morphing的时候老师介绍了一样挺好玩的东西,我用它来做人脸渐变。 先看看效果图: 。。。。。。。。。。。。。。。。。。。。。。…

android按钮详解,android-morphing-button

从一种形状变成另一种形状。 你可以轻易的继承MorphingButton来添加自己的行为(behaviour),下面是一个继承自MorphingButton的ofLinearProgressButton。 示例代码// sample demonstrate how to morph button to green circle with icon MorphingButton btnMorph (M…

基于StyleGAN的Face-Morphing

本文详细介绍了生成对抗网络(GAN)的知识,并用其变换人脸,并探寻如何利用StyleGAN生成不同属性(如年龄、微笑等)的人脸。 概述 直到最近,我才开始探索深度学习的全部内容,并在计算机…

人脸融合技术,用 Python - OpenCV 来帮你实现

提了好几天的人脸融合技术,今天终于被提上日程,该技术是基于之前介绍的技术基础上延伸得到的,如果之前没有了解过这两篇文章,建议提前看下, 实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你&…

FaceMorphing

大学时候上《计算机视觉与模式识别》课程的时候,一个人脸morphing作业的源代码,运行环境为VS2015。 项目源代码下载链接 效果图如下:

实时渲染(RealTimeRendering-4thEdition)笔记——4变换(下)

变换(下) 顶点混合(vertex blender)渐变(Morphing)Geometry Cache Playback投影(Projections)透视投影 顶点混合(vertex blender) 现在我们想象要完成一个手…

基于图像的虚拟换装:Morphing architectures for pose-based image generation of people in clothing

项目的重点是变形操作的特征化与实现,解决卷积神经网络中的信息失准问题。我们将所研究的方法应用到一个换衣服的任务中,将其建模为一个条件图像生成问题。尽管对抗性方法在生成性任务中很流行,但我们将此项目的范围限制为监督方法&#xff0…

Traffic morphing阅读笔记

文章目录 前言1 变形1.1 符号表示及算法讲解1.1.1 符号1.1.2 凸优化求解1.1.3 降低开销1.1.4大样本空间分治1.1.5实验中的注意事项短会话源分布变化多样数据包分片 2 实验评估2.1 加密IP语音识别白盒变形黑盒变形2.1.1 与原始分类器对抗二元分类器三元分类器 2.1.2 不可区分性评…

云波社区 l Mecha Morphing(变形机甲)游戏介绍

Mecha Morphing(变形机甲)由YGG领投的一个创新型GameFi项目即将开始打金! 简单介绍一下,该游戏由Call of duty核心团队研发,画风完美阐释暴力美学。在MechaMorphing元宇宙中,玩家可以通过参与PVE, PVP, 土地…

Real-Time Rendering——4.5 Morphing 变形

Imagine that one model is displayed at time t0 and we wish it to change into another model by time t1. For all times between t0 and t1, a continuous “mixed” model is obtained, using some kind of interpolation. An example of morphing is shown in Figure 4.…

《数字图像处理》dlib人脸检测获取关键点,delaunay三角划分,实现人脸的几何变换warpping,接着实现两幅人脸图像之间的渐变合成morphing

这学期在上《数字图像处理》这门课程,老师布置了几个大作业,自己和同学一起讨论完成后,感觉还挺有意思的,就想着把这个作业整理一下 : 目录 1.实验任务和要求 2.实验原理 3.实验代码 3.1利用人脸特征点检测工具dli…

OpenCV:图像变形(Image Morphing)

融合/形变技术 Image Morphing的原理是十分简单的。有两幅图像 I 和 J ,我们希望通过融合图像 I 和 J 来创建一幅新的图像 M. 图像 I 和 J 的融合过程是由参数 alpha 来控制,参数 alpha 介于0和1之间。当alpha 0,新的图像 M看起来更接近 I;当alpha 1&…

计算机动画作业:图像morphing

本学期选了计算机动画课程,第一次作业是图像morphing, 本来打算选择基于四边网格的morphing, 但因为要用到曲面插值,感觉比较麻烦,因此使用基于三角网格的face morphing。 一、总体方案 1、检测人脸特征点&#xff0…

Morphing

<script src"http://widgets.amung.us/classic.js" type"text/javascript"></script> <script type"text/javascript"> </script> Morphing 这篇文章给大家介绍一下morphing&#xff0c;它是一种变型动画&#xff0c;…

深度学习中的GPU与CUDA

对应视频教程&#xff1a;https://www.bilibili.com/video/BV1S5411X7FY/ 文章目录 1. 显卡&#xff08;GPU&#xff09;与驱动2. 显卡与CUDA3. 如何查看自己的显卡 1. 显卡&#xff08;GPU&#xff09;与驱动 显卡&#xff0c;也称之为 GPU。GPU 的全称是 Graphics Processin…

CUDA详解

CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构&#xf…

CUDA入门

1. 引言 CUDA为a platform and programming model for CUDA-enabled GPUs。该平台通过GPU来进行计算。CUDA为GPU编程和管理 提供C/C语言扩展和API。 CUDA编程中&#xff0c;会同时使用CPU和GPU进行计算&#xff1a; CPU system&#xff1a;称为host。GPU system&#xff1a;…