简介
昨日看见卿工发出的一篇文章“动态展示孩子的相貌变化”,感觉很有意思。遂到github上面拉下来代码试了试。本文是一片教程,附带一些避免坑的注意事项。
首先上图看看这个项目的目标吧:
对的!通过面部识别来进行面部位置重合处理,然后进行插帧来做出渐变动画,最后可以配上音乐(可选)。
那么,我们开始吧!
安装依赖
按照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
图片位置、大小修改
首先,新建一张画布,大小为你的目标大小,并将一张大头照粘贴到你想要的位置:如下图
这张图片就会成为所有图片的位置与大小的参照——其它图片会按照这张图片调整方向,大小。设这张图片为参考图.jpg
。
命令行:
python face-movie/align.py -images "./原始图片文件夹" -target "./参考图.jpg" -overlay -border 5 -outdir "./修改后输出图片文件夹"
运行时可能要你去辨别哪张脸是目人物,terminal
如下所示:
弹出的窗口如下:(这个地方如果opencv版本不对,会显示异常)
结果:
在运行后,你可以对比原始图片与结果图片:
原始图片:
结果图片:
制作插帧影片
命令行:
python face-movie/main.py -morph -images "./修改后输出图片文件夹" -td 1.0 [转场动画秒数] -pd 2.0 [图片静止秒数] -fps 24 [帧率] -out 目标视频文件.mp4
结果: