批量视频处理批量视频编辑背景移除/去背景/换背景/抠图/抠像代码/实时抠图实时抠像人像去背景背景消除摄像头背景移除
Posted 李贺~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量视频处理批量视频编辑背景移除/去背景/换背景/抠图/抠像代码/实时抠图实时抠像人像去背景背景消除摄像头背景移除相关的知识,希望对你有一定的参考价值。
(八)批量视频处理、批量视频编辑、背景移除/去背景/换背景/抠图/抠像代码/实时抠图、实时抠像、人像去背景、背景消除、摄像头背景移除
当前短视频飞速发展,视频博主经常需要对大量视频进行编辑、处理,商用的视频编辑软件如剪影、蜜蜂剪辑、快剪辑等都无法对大量视频进行批量处理。短视频一般包含人像,如果对人像进行更换背景的批量操作,就没有好的工具可用了。
本文实现了视频批量更换背景的功能,使用了人工智能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:文件img
global bg_files, iii, stop_flag, t0
try: cap = cv2.VideoCapture(videofile) # 读取视频文件
except: self.show_error('读取视频文件:'+videofile+'时,出现错误!'); return
fps = 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 = 0
if size_x / size_y > 1.778: fx = 427 / size_x; fy = fx # 计算16:9的比例,以便缩放不变形
else: fx = 240 / size_y; fy = fx
while (True):
t2 = time.time()
if stop_flag:
cap.release(); out.release(); os.remove(tempfile)
self.txt11.setText('【文件信息】 文件总数:%d个 | 处理完成:%d个' % (filesnums, iii))
self.txt12.setText('【运行信息】 用户终止了正在运行的程序......')
return
next_fr += 1
ret, 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: break
if 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.直接将文件夹路径复制粘贴上去,点击扫描即可搜索
2.将路径 编辑框 内容 清空,
然后点击 扫描,
就会弹出浏览文件夹了
事实上相当简单
简单好操作
怎么样?
是不是很棒棒啊!
在后台回复【忆视频】
就可以获取破解版软件啦!
-END-
你有什么想说的?
我在留言板等你
欢迎加入【新媒体运营工具百宝箱】饭团
目前已有2K+付费成员加入
▼
王佳骏:新媒体编辑、多平台自媒体作者!旺骏工作室创始人!运营“黑科技”砖家
大咖推荐
买【新媒体运营工具百宝箱】饭团
每天一点黑科技,自己也是技术工
扫描二维码火速购买
特别提醒:幸运用户可以获得半价购买饭团机会!
佳骏精选
围观
丨
热文
丨
热文
丨
热文
丨
热文
丨
以上是关于批量视频处理批量视频编辑背景移除/去背景/换背景/抠图/抠像代码/实时抠图实时抠像人像去背景背景消除摄像头背景移除的主要内容,如果未能解决你的问题,请参考以下文章
Python遥感图像处理应用篇(十九):GDAL +numpy批量对遥感图像外围背景值进行处理
Python遥感图像处理应用篇(十九):GDAL +numpy批量对遥感图像外围背景值进行处理