如何实现换脸视频特效制作——三种换脸情况

473 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

前言

  最近无意间做了一个火柴人特效制作,感觉挺好玩的,想着趁现在激情还在,于是诞生了改一改华强买瓜: 把华强PS成我,这波画面简直不要太美丽!哈哈哈。

   本篇仅分享三种换脸情况以及效果描述。

两张图像人脸互换

实现效果: 对两张照片中人脸进行互换。
换脸材料: 准备需要进行替换人脸的两张图像分别命名为img1和img2
思路步骤:

  1. 读取人物图像img1、img2;
  2. 对图像进行与处理;
  3. 提取人物图像中的人脸img_face1、img_face2;
  4. 将img_face1绘制到img2上;
  5. 将img_face2绘制到img1上;

图像与视频中人脸互换

实现效果: 将视频画面中实时显示的人脸替换成指定图像中的人脸。
换脸材料: 准备需要进行替换人脸的图像img以及摄像头(video)和作者(person)
思路步骤:

  1. 读取需要进行被替换人脸图像img;
  2. 对img进行归一化处理;
  3. 对img中的人脸图像关键点提取命名face1;
  4. 打开摄像头video;
  5. 对视频画面帧进行相同的归一化操作;
  6. 对视频画面帧图像进行人脸关键点提取;
  7. 将face1绘制到视频画面帧上面的关键点

两视频画面中人脸互换

实现效果: 打开两个摄像头,对两视频画面中人脸进行对掉。
换脸材料: 两外接摄像头(video1&video2)以及两实验人员(persosn1&person2)
思路步骤:

  1. 开辟两线程thread1、thread2
  2. 对两个线程同时进行打开摄像头video1、vodeo2(PC端连接两摄像头)
  3. 对两摄像头的视频画面帧进行相同的预处理操作
  4. 提取video1&video2中face1&face2(人脸关键点提取)
  5. 将face1和face2进行对掉(两线程之间的通信)