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

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 进行视频编辑:为有声视频添加背景音乐

Python遥感图像处理应用篇(十九):GDAL +numpy批量对遥感图像外围背景值进行处理

Python遥感图像处理应用篇(十九):GDAL +numpy批量对遥感图像外围背景值进行处理

在移动设备上,ReactJS 背景视频(样式化的组件)会跳转到全屏,您必须将其滑开才能将其移除。你如何解决这个问题?

不惧繁杂背景,视频编辑服务一键实现人像抠图