Python+OpenCV实现实时视频3D换脸
开发环境
Python 2.X或Python3.X
OpenCV
NumPy
DLIB
pygame
PyOpenGL
必须从此处下载面部对齐模型:https://sourceforge.net/projects/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2并将其解压缩到主项目目录。
运行机制
首先,我们获取输入图像(我们想要在自己的脸上看到的人的图像)并找到面部区域及其地标。一旦我们得到了我们将3D模型拟合到那些地标(稍后更多),投射到图像空间的模型的顶点将是我们的纹理坐标。一旦完成并且所有内容都已初始化,相机将开始捕获图像。对于每个捕获的图像,执行以下步骤:
检测面部区域并定位面部标志。
3D模型适用于定位的地标。
使用pygame渲染3D模型,其中初始化期间获得纹理。
使用羽化(α混合)和非常简单的颜色校正将渲染模型的图像与从相机获得的图像混合。
最终图像显示给用户。
整个过程中最关键的因素是3D模型的拟合。该模型本身包括:
中性面的3D形状(顶点集),
一些混合形状,可以添加到中性面,以产生张口,眉毛等,
面部形状的一组三元组,形成面部的三角形网格,
两组索引,用于建立由界标定位器找到的界标与3D面部形状的顶点之间的对应关系。
使用以下等式将模型投影到图像空间中:
其中s是投影形状,a是缩放参数,P是旋转3D表面形状的旋转矩阵的前两行,S_0是中性面形状,w_1-n是混合形状权重,S_1-n是blendshapes,t是2D平移向量,n是混合形状的数量。
通过最小化投影形状和局部标志之间的差异来完成模型拟合。使用高斯牛顿法,相对于混合形状权重,缩放,旋转和平移完成最小化。
案例效果
接下来使用实时视频将爱因斯坦的脸移植到我的脸上~
原图片如下:
移植后效果如下:
案例下载
案例Demo下载:https://download.csdn.net/download/m0_38106923/10593086
Python+OpenCV实现实时视频3D换脸相关推荐
- Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储
原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...
- Python+OpenCv实现AI人脸识别身份认证系统(1)——人脸识别原理
原 Python+OpenCv实现AI人脸识别身份认证系统(1)--人脸识别原理 置顶 2019年07月02日 08:47:40 不脱发的程序猿 阅读数 1255更多 所属专栏: 人脸识别身份认证系统 ...
- 使用Python,OpenCV在视频中进行实时条形码检测
使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...
- Python+OpenCV图像处理实验
目录 1.灰度化功能 2.反转功能 3.通道分离功能 4.噪音.滤波功能 5.高斯双边滤波功能 6.均值偏移滤波功能 7.图像二值化功能 8.Canny边缘检测功能 9.直线检测功能 10.圆形检测功 ...
- 使用Python+OpenCV+dlib为人脸生成口罩
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...
- Python+OpenCV学习(17)---摄像机标定
Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...
- python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...
python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...
- python——opencv入门(一)
1. OpenCV的结构 和Python一样,当前的OpenCV也有两个大版本,OpenCV2和OpenCV3.相比OpenCV2,OpenCV3提供了更强的功能和更多方便的特性.不过考虑到和深度学习 ...
- Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm)
Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm) 理论 kNN is one of the simplest classi ...
最新文章
- 平衡二叉排序树的创建和实现调整过程
- php 表单错误弹窗,PHP表单错误
- ddr2是几代内存_内存系列一:快速读懂内存条标签
- centos中bash占用cpu,linux下如何定位CPU占用高的进程的问题点
- 编写基于Property-based的单元测试
- bzoj 2653 洛谷 P2839 [国家集训队] middle
- MKcms4.4.3仿品优影视网站系统完整开源版自动采集可设置视频收费
- Spring MVC学习笔记(七)
- maven工程的多环境配置方案(profile)
- 无敌大奉献:iOS技术开发知识整理
- python文件都是脚本吗_.py文件是python脚本吗
- 行星级计算机,称霸两千余年的最快“计算机”——我国的算盘,两弹一星都靠它...
- mysql 从入门到精通 pdf_MySQL5.7从入门到精通PDF完整版+随书教学视频
- rx550 黑苹果_黑苹果Hackintosh显卡入手指南
- 自学笔记-使用MyBatis建立数据库基本连接
- android超频闪退,显卡超频后玩游戏闪退 | 手游网游页游攻略大全
- python做var模型_python中VAR模型的条件预测
- 触宝电话推“免费拨打国际长途”新业务
- Tomcat使用总结
- 【Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化】