企业网站建设的核心是啥—Python抠图教程

最近报考报名参加超越杯造成了一段小插曲,举行方要求提交白底的精锐精英团队详尽详细介绍VCR,可是之前没有注意到这一点,就找了个风景优美的地域拍摄,直到截止前才发现大事儿儿不妙。

这时候自然而然地就想到抠图了!可是本次的视频状况花里胡哨。
[标识:內容1]

我掌握了社会各界图像大佬,得到的答复一般是许多个paper题型,或者许多个模糊不清不清觉厉的词汇,针对马上可用来用途理刻不容缓的,的确没有。。。

因而打了算从难点本质考虑到,视频抠图最马上的设计构思只不过三步走:

1.从视频转换为一帧帧的图像

2.将每帧图像各有进行人像图片照片分离出来出去

3.将处理后的每帧图像合并回新视频

在这其中13两步不言而喻是没有难度系数系数的,如果找寻相符合的视频、图像库。

第二步就是难点、薄弱点隶属了。

市面上上上的人像图片照片分割api众多,例如百度搜索检索的aip、旷视的Face++、国外火爆的remove.bg。

我还是选择了互连网安稳,每日允许开启50000次的百度搜索检索aip,倘若每秒钟钟25帧,喻意着可以每日处理长度为33.33分鐘的视频!

当然倘若有线下推广版api(可以明显强烈推荐我一下)或者本身训练好的神经系统系统软件互连网,没什么疑惑是更优的选择。

下面一开始敲编码啦

最开始是视频转相片一一部分

 

经历这一步转换,大伙儿约2分鐘的检验视频被奇特地变成

这1819张独立的相片

务必一定地存储房间内室内空间哦~

接下来,关键的一步赶到!对每一张相片进行抠详解决。


labelmap = base64.b64decode(seg_res[ labelmap ]) nparr = np.fromstring(labelmap, np.uint8) labelimg = cv2.imdecode(nparr, 1) # 其实不是0 0 0就是1 1 1的抠图结果引流方法引流矩阵 labelimg = cv2.resize(labelimg, (width, height), interpolation=cv2.INTER_NEAREST) all_one = np.where(labelimg -1, 1, labelimg) #mask_img = np.where(labelimg == 1, 255, labelimg) # 倘若是人的地域rgb都弄成255,要不然都是0显示信息信息内容灰灰黑色 # maskfile = imgfile.replace( .jpg , _mask.png ) # cv2.imwrite(maskfile, mask_img) labelimg = cv2.blur(labelimg, (9, 9)) sum = labelimg * ori_img + (all_one - labelimg)*color_new res_imgfile = imgsres\\ + str(i) + .jpg result = cv2.resize(sum, None, fx=1, fy=1, interpolation=cv2.INTER_NEAREST) cv2.imwrite(res_imgfile, result) print(imgfile, Done. ) pass

可以在开启do_split_figure涵数时特殊结果相片的状况色,默认设置设定是白底。

倘若喜欢看抠图的mask结果,可以将存储mask_img相关的几行编号撤消注释。

十分非常值得注意的是,在得到0/1结果引流方法引流矩阵后,务必进行边缘蒙版处理,这儿我用了简单的cv2.blur,大家倘若有更强的方法可以告之我。

接着就是

sum = labelimg * ori_img + (all_one - labelimg)*color_new

以blur之后的引流方法引流矩阵为占有率,将销售市场市场前景色和状况色填写去啦!

 

最后,激动心里的时刻赶到!只务必再将这类相片转回视频便可以了了。

import cv2 from cv2 import VideoWriter, VideoWriter_fourcc, imread, resize import os img_root = imgsres\\ # Edit each frame s appearing time! fps = 25 fourcc = VideoWriter_fourcc(* MJPG ) # 鉴别率本身看到写 videoWriter = cv2.VideoWriter( TestVideoRes.avi , fourcc, fps, (1920, 1080)) im_names = os.listdir(img_root) for im_name in range(len(im_names)): frame = cv2.imread(img_root + str(im_name+1) + .jpg ) print(im_name) videoWriter.write(frame) videoWriter.release() 下面就是具体实际效果 不能以说有多棒,但设计构思就是那般的,倘若要改进可以从选择更强的人像图片照片分割API或者运用本地训练好的神经系统系统软件互连线下手。

视频帧正中间也是有联系的,倘若追求完美极致更强的具体实际效果也理应考虑到到进去,可是就比较技术性技术专业了。