面孔变迁动画制作

/

简介

昨日看见卿工发出的一篇文章“动态展示孩子的相貌变化”,感觉很有意思。遂到github上面拉下来代码试了试。本文是一片教程,附带一些避免坑的注意事项。

项目地址:https://github.com/andrewdcampbell/face-movie

首先上图看看这个项目的目标吧:

face-demo

对的!通过面部识别来进行面部位置重合处理,然后进行插帧来做出渐变动画,最后可以配上音乐(可选)。

那么,我们开始吧!


安装依赖

按照github代码库中描述:

Requirements

  • OpenCV
    • For conda users, run conda install -c conda-forge opencv.
  • Dlib
    • For conda users, run conda install -c conda-forge dlib.
  • ffmpeg
    • For conda users, run conda install -c conda-forge ffmpeg.
  • scipy
  • numpy
  • matplotlib
  • pillow

注意!这儿有个问题,由于代码是2019年版本,所以新的opencv库无法正常显示,应该安装opencv-python==3.4.5.20版本。

pip install opencv-python==3.4.5.20

图片位置、大小修改

首先,新建一张画布,大小为你的目标大小,并将一张大头照粘贴到你想要的位置:如下图

BASE_IMAGE

这张图片就会成为所有图片的位置与大小的参照——其它图片会按照这张图片调整方向,大小。设这张图片为参考图.jpg


命令行:

python face-movie/align.py -images "./原始图片文件夹" -target "./参考图.jpg" -overlay -border 5 -outdir "./修改后输出图片文件夹"

运行时可能要你去辨别哪张脸是目人物,terminal如下所示:

image-20200428135618747

弹出的窗口如下:(这个地方如果opencv版本不对,会显示异常)

image-20200428135623427

结果:

在运行后,你可以对比原始图片与结果图片:

原始图片:

image-20200428140559487

结果图片:

image-20200428140635735


制作插帧影片

命令行:

python face-movie/main.py -morph -images "./修改后输出图片文件夹" -td 1.0 [转场动画秒数] -pd 2.0 [图片静止秒数] -fps 24 [帧率] -out 目标视频文件.mp4

结果:

face-demo