(八)批量视频处理、批量视频编辑、背景移除/去背景/换背景/抠图/抠像代码/实时抠图、实时抠像、人像去背景、背景消除、摄像头背景移除

当前短视频飞速发展,视频博主经常需要对大量视频进行编辑、处理,商用的视频编辑软件如剪影、蜜蜂剪辑、快剪辑等都无法对大量视频进行批量处理。短视频一般包含人像,如果对人像进行更换背景的批量操作,就没有好的工具可用了。
本文实现了视频批量更换背景的功能,使用了人工智能Matting的算法,可以达到发丝级别的抠像。
软件打包上传了百度网盘:
【视频背景移除】链接: https://pan.baidu.com/s/1Dhr7MHkGd8vlXfyETrK3xQ 提取码: 29n2
【图像背景移除】链接: https://pan.baidu.com/s/1nhuWMYWvTV3B0d0CdGDhFQ 提取码: q46x
【摄像头背景移除】链接: https://pan.baidu.com/s/1tx88C3dCH3ej3PJcKLDmdQ 提取码: g7xy

本文与前几篇博文关联性较强,请事先阅读前几篇。 对此文感兴趣的可以加微深入探讨:herbert156

一、主要功能:
以下的Python代码的功能:批量选择视频、批量选择背景、视频背景移除、去背景、人像抠图、换背景等,主要包括:
1、对包含人像的视频进行抠像,并替换背景(可以替换成纯色的、也可以替换成指定背景图片,如果选择多个背景文件,则按照选择顺序循环切换背景);
2、可以批量处理,在选择文件/背景文件的对话框里可以选择多个文件,同时抠像换背景、批量操作;
3、软件设置里可以设置使用GPU处理还是CPU处理,软件只支持英伟达(Nvidia)的GTX/RTX系列的GPU;
4、抠图算法的模型有3种:简陋、细致、精细,可以根据原始图片的背景复杂度随意选择;简陋模型处理速度最快、精细的速度最慢。快慢也与视频分辨率强相关。
5、信息统计里面可以实时显示处理的各种统计信息;
6、视频处理完毕后自动进行音频的处理与合成。

二、主要代码:

    def video_change_background(self, videofile, backfile, bg_file_name):     #videofile:文件名、backfile:文件imgglobal bg_files, iii, stop_flag, t0try: cap = cv2.VideoCapture(videofile)  # 读取视频文件except: self.show_error('读取视频文件:'+videofile+'时,出现错误!'); returnfps = cap.get(cv2.CAP_PROP_FPS)  # 帧率total_fr = cap.get(cv2.CAP_PROP_FRAME_COUNT)  # 总帧数size_x = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # 视频流的帧宽度size_y = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 视频流的帧高度len_m,len_s = divmod(total_fr/fps, 60)videoinfo = '【文件信息】 视频总数:%d|正在处理(%d/%d):'%(filesnums,iii,filesnums) + os.path.split(videofile)[1]+\'|帧分辨率:%dx%d|视频长度:%d分%d秒|FPS:%.2f帧/秒   |当前背景:'%(size_x,size_y,len_m,len_s,fps)+\os.path.split(bg_file_name)[1]self.txt11.setText(videoinfo)img1 = cv2.resize(backfile, (size_x, size_y))tempfile = os.path.split(bg_files[0])[0]+'\\out.mp4'out = cv2.VideoWriter(tempfile, cv2.VideoWriter_fourcc(*'mp4v'), fps, (size_x, size_y))t1 = time.time(); next_fr = 0if size_x / size_y > 1.778: fx = 427 / size_x; fy = fx   # 计算16:9的比例,以便缩放不变形else: fx = 240 / size_y; fy = fxwhile (True):t2 = time.time()if stop_flag:cap.release();  out.release(); os.remove(tempfile)self.txt11.setText('【文件信息】 文件总数:%d个 | 处理完成:%d个' % (filesnums, iii))self.txt12.setText('【运行信息】 用户终止了正在运行的程序......')returnnext_fr += 1ret, frame = cap.read()if ret:if not DEBUG_FLAG: img2 = self.koutu(frame)else: img2 = frame#img2 = cv2.cvtColor(frame.copy(), cv2.COLOR_BGR2BGRA)   #测试用语句img3 = self.two_pic_combine_PIL(img1,img2)out.write(img3)  # 帧转成视频else: breakif Box1_flag: self.my_label1.setPixmap(self.CvMatToQImage(cv2.resize(frame,(0,0),fx=fx,fy=fy)))if Box2_flag: self.my_label2.setPixmap(self.CvMatToQImage(cv2.resize(img3,(0,0),fx=fx,fy=fy)))cv2.waitKey(1)t3 = time.time(); m1, s1 = divmod(t3-t0, 60); m2, s2 = divmod(t3-t1, 60)runinfo = '【运行信息】 当前视频处理进度:%d%% | 总耗时:%d分%d秒 | 当前视频耗时:%d分%d秒 | 当前帧耗时:%.2f秒 | 处理速度:%.1fFPS'\%(100*next_fr/total_fr, m1, s1, m2, s2,(t3-t2),1/(t3-t2))self.txt12.setText(runinfo)cap.release(); out.release()self.txt12.setText('【运行信息】 正在分离、合成音轨(大概需要:%.1f分钟,不要关闭软件),请稍后......'%(len_m/2))cv2.waitKey(1)audio = mpe.AudioFileClip(videofile)  # 分离声轨clip = mpe.VideoFileClip(tempfile)videoclip = clip.set_audio(audio)  # 写入声轨videoclip.write_videofile(out_dir+'/'+os.path.splitext(os.path.split(videofile)[1])[0]+'_1.mp4')os.remove(tempfile)t3 = time.time()self.txt12.setText('【运行信息】 处理完毕!总消耗时间:%d分%d秒'%(m1, s1))self.txt11.setText('【文件信息】 文件总数:%d个 | 处理完成:%d个'%(filesnums,iii))

三、代码说明
工具的AI处理使用了百度飞浆的PaddleSeg,具体使用说明、细节请参考百度飞桨网站:https://github.com/PaddlePaddle/PaddleSeg

(八)批量视频处理、批量视频编辑、背景移除/去背景/换背景/抠图/抠像代码/实时抠图、实时抠像、人像去背景、背景消除、摄像头背景移除相关推荐

  1. Macos上一款DVD刻录工具,您能够帮助大家快速的翻录各种DVD视频,还支持编辑视频、批量转换等功能

    Tipard DVD Ripper mac版是Macos上一款DVD刻录工具,您能够帮助大家快速的翻录各种DVD视频,还支持编辑视频.批量转换等功能.使用这款润健能够将您心爱的DVD视频从光盘上完整提 ...

  2. python爬取cctalk视频_新媒体编辑怎么批量爬取数据

    说到数据采集,市面上很多采集工具,有商业的也有开源的各种工具,一搜一大堆,做新媒体的好不容易找到一些资料内容甚至图片,手工粘贴复制有时候很慢,一点都不友好,有没有办法能帮助新媒体从业者快速采集到想要的 ...

  3. 如何截取视频片段 批量截取片段的方法

    如何截取视频片段 多个视频批量截取片段的方法?截取视频片段的操作很常用到,尤其是喜欢在网上分享小视频的朋友们,看到某电视剧或电影等视频的某个精彩片段就会想截取下来分享到网络.怎么操作呢? 各位用户朋友 ...

  4. 如何截取视频片段 批量截取片段的方法 1

    如何截取视频片段 多个视频批量截取片段的方法?截取视频片段的操作很常用到,尤其是喜欢在网上分享小视频的朋友们,看到某电视剧或电影等视频的某个精彩片段就会想截取下来分享到网络.怎么操作呢? 各位用户朋友 ...

  5. android 图片保存电脑上,怎样简单快速的将手机里的照片和视频,批量保存到电脑?...

    原标题:怎样简单快速的将手机里的照片和视频,批量保存到电脑? 手机用久了,内存怎么都不够用,因为照片和视频占据了大部分的存储空间,需不定期将照片和视频保存到电脑里,以腾出空间来,让手机有更多的空间来存 ...

  6. 抖音可以搬运视频吗 | 短视频批量伪原创

             抖音可以搬运视频吗 | 短视频批量伪原创                    以今日头条为例,视频的播放量主要通过系统推荐来获得,它的智能推荐系统(俗称人工智 .         ...

  7. python批量下载b站_PYTHON批量下载B站视频小脚本

    无聊废话 最近在学习HCIE的视频,收藏了几个相关的视频,结果前几天...视频被下架了了...呃...(⊙o⊙)- 视频被下架 视频被下架了...我学了一半呀...哭... 在网上一顿找,依旧找不到. ...

  8. 抖音播放量1000上热门 视频md5批量修改

              抖音播放量1000上热门 视频md5批量修改          至此,那些网红也就博取到了关注度.如二妮正能量.张小龙等.,在这个网红迸发的时代,大家不得不承认,除了明星外,网红背 ...

  9. 短视频云端批量混剪实操指南

    本文为阿里云智能媒体服务IMS「智能内容创作」实践指南第一期,讲述围绕新媒体广告营销场景,通过"去重策略"全自动批量混剪短视频,助力更高效.更快速地创作优质短视频内容. 欧叔|作者 ...

最新文章

  1. Java多线程:线程8锁案例分析
  2. oracle+rac+算法,Oracle RAC中的投票算法
  3. [鸟哥的Linux私房菜] X Window 与 纯文本模式的切换
  4. 面试必会:HashMap 实现原理解读
  5. Linux CentOS 7下 Apache Tomcat 7 安装与配置
  6. java连接access2013数据库_滴水穿石–Java连接Access数据库及其操作
  7. 利用相机SDK采相转换至HImage
  8. 关于爬虫中遇到的问题
  9. Java String类型数据的字节长度
  10. request 和require区别_JAVA WEB开发中涉及到的get和post请求,他们的区别
  11. 前端开发经验:当初我是如何学习JavaScript
  12. 正式开始学习GO语言
  13. 基于node.js和Vue的音乐管理系统 /音乐网站的设计与实现
  14. NI视觉视觉软件简介
  15. USB接口IC读写器oem软件_AB密码完整解决方案/读写卡测试程序及源代码/c++builder源代码(2)
  16. vue+file-saver+xlsx 封装导出Excel表格方法
  17. 专家警告全球芯片短缺可能持续到 2022 年之后
  18. SEO优化应该照用户的需求去做
  19. 部分有关 广告联盟作弊 与反作弊资料收集
  20. mysql向上向下递归查询父集子集

热门文章

  1. android 原生广告制作,创建横幅、原生广告 · adtalos/android-xy-sdk-demo Wiki · GitHub
  2. win10系统无限一分钟后重启问题解决
  3. BUG越改越多?微信团队用自动化测试化险为夷
  4. 安卓逆向-KG音乐2021最新版下载接口分析
  5. 只有部署 SSL 证书才能保护网上隐私信息安全
  6. theharvester用法
  7. CSS实现手机信号条
  8. OsgDelaunay三角网绘制及其如何限制生成的三角形
  9. 腾讯云直播-开启互动直播
  10. Flask -- 会话