开发环境

  • 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模型拟合到那些地标(稍后更多),投射到图像空间的模型的顶点将是我们的纹理坐标。一旦完成并且所有内容都已初始化,相机将开始捕获图像。对于每个捕获的图像,执行以下步骤:

  1. 检测面部区域并定位面部标志。

  2. 3D模型适用于定位的地标。

  3. 使用pygame渲染3D模型,其中初始化期间获得纹理。

  4. 使用羽化(α混合)和非常简单的颜色校正将渲染模型的图像与从相机获得的图像混合。

  5. 最终图像显示给用户。

整个过程中最关键的因素是3D模型的拟合。该模型本身包括:

  1. 中性面的3D形状(顶点集),

  2. 一些混合形状,可以添加到中性面,以产生张口,眉毛等,

  3. 面部形状的一组三元组,形成面部的三角形网格,

  4. 两组索引,用于建立由界标定位器找到的界标与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换脸相关推荐

  1. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

  2. Python+OpenCv实现AI人脸识别身份认证系统(1)——人脸识别原理

    原 Python+OpenCv实现AI人脸识别身份认证系统(1)--人脸识别原理 置顶 2019年07月02日 08:47:40 不脱发的程序猿 阅读数 1255更多 所属专栏: 人脸识别身份认证系统 ...

  3. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

  4. Python+OpenCV图像处理实验

    目录 1.灰度化功能 2.反转功能 3.通道分离功能 4.噪音.滤波功能 5.高斯双边滤波功能 6.均值偏移滤波功能 7.图像二值化功能 8.Canny边缘检测功能 9.直线检测功能 10.圆形检测功 ...

  5. 使用Python+OpenCV+dlib为人脸生成口罩

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...

  6. Python+OpenCV学习(17)---摄像机标定

    Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...

  7. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

  8. python——opencv入门(一)

    1. OpenCV的结构 和Python一样,当前的OpenCV也有两个大版本,OpenCV2和OpenCV3.相比OpenCV2,OpenCV3提供了更强的功能和更多方便的特性.不过考虑到和深度学习 ...

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

最新文章

  1. 平衡二叉排序树的创建和实现调整过程
  2. php 表单错误弹窗,PHP表单错误
  3. ddr2是几代内存_内存系列一:快速读懂内存条标签
  4. centos中bash占用cpu,linux下如何定位CPU占用高的进程的问题点
  5. 编写基于Property-based的单元测试
  6. bzoj 2653 洛谷 P2839 [国家集训队] middle
  7. MKcms4.4.3仿品优影视网站系统完整开源版自动采集可设置视频收费
  8. Spring MVC学习笔记(七)
  9. maven工程的多环境配置方案(profile)
  10. 无敌大奉献:iOS技术开发知识整理
  11. python文件都是脚本吗_.py文件是python脚本吗
  12. 行星级计算机,称霸两千余年的最快“计算机”——我国的算盘,两弹一星都靠它...
  13. mysql 从入门到精通 pdf_MySQL5.7从入门到精通PDF完整版+随书教学视频
  14. rx550 黑苹果_黑苹果Hackintosh显卡入手指南
  15. 自学笔记-使用MyBatis建立数据库基本连接
  16. android超频闪退,显卡超频后玩游戏闪退 | 手游网游页游攻略大全
  17. python做var模型_python中VAR模型的条件预测
  18. 触宝电话推“免费拨打国际长途”新业务
  19. Tomcat使用总结
  20. 【Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化】

热门文章

  1. 微信小程序的技术原理
  2. 弘辽科技:端午节拼多多有优惠吗?力度如何?
  3. ‘\t‘和“\t“的区别
  4. 防呆设计(内容摘录)
  5. Redis——好友关注、共同关注、Feed流推送
  6. 微信小程序头像上传(一)
  7. php直播推流rtmp,直播推流nginx-rtmp-module集成
  8. uni-app 快手小程序如何设置跟元素样式
  9. 【I2C】I2C QA
  10. zabbix实现对mysql数据库的监控