只要三步,带你用Python换脸
菜鸟哥 程序员GitHub 2020-05-08
作为单身狗的小编,一直希望有女神能看上我,幻想有一天如果自己的女朋友是明星该有多好,让自己的“明星”女友对着自己撒娇,是不是感觉人生已经达到了高潮。
哎,白日做梦呀,单纯靠yy是不行的,还好小编在蹉跎岁月的岁月中练就了一身python技能,今天小编就带领大家利用python实现一个换脸的特效,让自己的女友换脸成为我们喜欢的明星,让自己喜欢的女星来对自己撒娇。下面就进入我们的程序吧。
01.小试牛刀
首先,我们要明确应该如何实现换脸呢,我们用一个图来进行展示:
对于换脸,我们需要有一个模板图片和目标图片,例如上图中的娜扎和热巴,我们需要提取到热巴的脸部图片,然后在娜扎的图片中,寻找合适的未知,将热巴的脸覆盖在上面,从而完成我们的换脸。对于我们的制作而言,我们只需要将女朋友的照片换成娜扎的照片,然后就可以将女朋友的脸替换成热巴。
程序如下图所示:
这里需要提一下,小编分别用了百度AI和旷视的平台进行制作,但是旷视的效果要好于百度,所以小编采用旷视的人脸融合平台进行上述的换脸操作。
程序首先以二进制形式读入模板图片和目标图片,并利用base64进行编码。在构建完data的字典数据后,通过post上传数据,便可以获取到返回的json数据,最后将数据写入到本地的图片文件即可。
02.具体的操作
上述的程序只是完成了单个的图片,既没有声音,也没有动作,简单乏味,麻麻赖赖,所以还得继续盘它。接下来我们要制作的就是对于视频的换脸。对于视频换脸,我们的程序是这样构造的。
01).首先是逐帧读取视频完成换脸,程序如下图所示:
上述程序首先需要逐帧读入图片,然后调用merge_face函数完成换脸,将换脸后的图片保存到本地。
02).在完成换脸后,接下来就是将图片合成视频,并将合成视频添加上音频,程序如下图所示:
上述程序中,首先读取所有的图片地址,然后利用opencv,进行视频的合成,最后利用pymovie库完成音频视频的同轨,便完成了最终视频的制作。
最后我们来展示一下合成的视频
怎么样,是不是有内味了,如果大家喜欢其他的明星的话,也可以试着去尝试其他的明星换脸哦。其实我想说,我心目中的女神是神仙姐姐~~ 你呢,来留言区吱一声。
想看本篇视频源码近期录制ing,尝鲜的可以点击阅读原文查看其他趣味视频。