基于Python实现视频的人脸融合功能


Posted in Python onJune 12, 2020

基于Python实现视频的人脸融合功能

图片提取

为了方便技术展示,我们选取素材为演员杨紫的一段演讲视频,用例仅为技术交流演示使用,不针对任何指定人。

为达到我们AI换脸的目的,我们首先需要将这段视频逐帧提取成照片

def vedio_2_pic(self,file,save_path):
 """
 逐帧取照片
 file:视频的位置
 save_path:保存路径
 """
 # 读取视频
 video = cv2.VideoCapture(file)
 # 获取视频帧率
 fps = video.get(cv2.CAP_PROP_FPS)
 # 获取画面大小
 width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
 height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
 size = (width, height)
 frame_num = str(video.get(7))
 ret, frame = video.read()
 num =1
 while True:
  ret, frame = video.read()
  if ret !=True:
  break
  cv2.imwrite(save_path + str(num) + '.jpg', frame)
  num +=1
 video.release()
 return fps, size,frame_num

脸部融合

上一环节我们已对视频进行了图片提取,我希望演员杨紫可以有杨幂一样的眼睛,长得更像杨幂一点。那么"目标选定人"就是杨幂了。

因为视频可能会有镜头切换,对焦目标可能是观众或者其他人,所以在脸部融合前,需要判断要转换的图片中是否有杨紫,如果有大于0.85的概率确定是杨紫,我们进行脸部融合,如果小于等于0.85概率我们就不进行脸部融合,下面进行脸部融合。

基于Python实现视频的人脸融合功能

核心代码

for i in range(frame_num):
 image2="""/Users/***/face_ztl/picture/%d.jpg"""%(i)
 content = video_make.img_compare(image1,image2)
 try:
 if content >0.85:
  print('-----%d-----'%(i))
  video_make.merge_face(image2,object_image,merge_rate=100)
 else:
  print(0)
  img = cv2.imread(image2)
  img_path = image2.replace('picture','picture_new')
  cv2.imwrite(img_path, img)
 except:
 pass
 print('第%d张出现了问题'%(i))

提取音频

为了合成后的视频有声音,我们将视频中的音频进行提取并保存下来,代码如下:

def getMusic(self,video_name,save_path):
 """
 获取指定视频的音频
 video_name:视频路径
 save_path:音频保存路径
 举例
 save_path='/Users/***/vedio/1.wav' 
 """
 # 读取视频文件
 video = VideoFileClip(video_name)
 # 返回音频
 audio = video.audio
 audio.write_audiofile(save_path)

合成视频

至此我们得到了音频、融合后的图片,接下来就是最后一步合成视频了,代码如下:

"""
 图片转视频
 save_path:视频保存路径
 """
 # 写入视频
 fourcc = cv2.VideoWriter_fourcc(*'mp4v')
 video = cv2.VideoWriter(save_path, fourcc, fps, size)

 # 排序目的
 for item in range(int(frame_num)):
  path = pic_path +str(item) + '.jpg'
  if os.path.exists(path):
  # 读取原图像
  img = cv2.imread(path)
  # 写入视频
  video.write(img)
 video.release()

总结

到此这篇关于基于Python实现视频的人脸融合功能的文章就介绍到这了,更多相关Python实现视频的人脸融合内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
提升Python程序运行效率的6个方法
Mar 31 Python
python web框架学习笔记
May 03 Python
Python聊天室程序(基础版)
Apr 01 Python
Python3.6简单反射操作示例
Jun 14 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
Python可迭代对象操作示例
May 07 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
python super用法及原理详解
Jan 20 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
Pytorch环境搭建与基本语法
Jun 03 Python
Python timeit模块原理及使用方法
Oct 10 Python
使用Keras实现简单线性回归模型操作
Jun 12 #Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 #Python
简单了解Python变量作用域正确使用方法
Jun 12 #Python
keras 读取多标签图像数据方式
Jun 12 #Python
Python数据可视化图实现过程详解
Jun 12 #Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
Jun 12 #Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 #Python
You might like
星际流派综述
2020/03/04 星际争霸
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Django框架表单操作实例分析
2019/11/04 Python
Python使用type动态创建类操作示例
2020/02/29 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
如何开发一个JQuery插件
2016/07/28 面试题
婚礼答谢宴主持词
2014/03/14 职场文书
导游个人求职信
2014/04/25 职场文书
个人担保书格式范文
2014/05/12 职场文书
生日宴会策划方案
2014/06/03 职场文书
促销活动总结怎么写
2014/06/25 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
假期安全教育广播稿
2014/10/04 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript