Google Mediapipe人像分割,可以随意改变图片和视频的背景。

在一些视频聊天软件中,我们可以看到很多人的背景特别的漂亮,甚至我们都怀疑是不是真实地来到了某个地方,

在一些视频聊天软件中,我们可以看到很多人的背景特别好看,甚至我们怀疑他们是不是真的来到了某地。本期介绍Mediapipe人像分割(RVM人像分割)。

MediaPipe自拍分割分割场景中的突出人物。它可以在智能手机和笔记本电脑上实时运行。

模型

在这个解决方案中,MediaPipe提供了两种模型:通用模型和景观模型。这两个模型都基于MobileNetV3,并经过修改以提高效率。通用模型在2562563(HWC)张量上运行,并输出表示分区掩码的2562561张量。景观模型类似于一般模型,但在144x256x3 (HWC)张量上运行。它比普通型号的FLOP少,所以运行速度更快。请注意,在将输入图像输入ML模型之前,MediaPipe自拍分割会自动将输入图像的大小调整到所需的张量维度。

代码实现

导入cv 2 import media pipe as MP import numpy as npmp _ drawing=MP . solutions . drawing _ utils MP _ selfie _ segmentation=MP . solutions . selfie _ segmentation # #图像字符抠图: image _ files=[] bg _ color=(0,255,0) #其他照片也可用于背景色,应与原照片大小一致# bg _ image=cv2.imread (‘6.jpgselfiesegmentations(model _ selection=0)as selfie _ segmentation 3360 Image=cv2 . im read(file)Image _ height,image _ width,_=image.shape #在处理之前,需要将图片转换为RGB颜色空间image=cv2.cvtColor(image,2 .cv color _ bgr 2 RGB)results=selfie _ segmentation . process(image)#在背景图像上绘制分割图#为了改善边界周围的分割,可以考虑在results . segmentation _ mask condition=NP . stack((results . segmentation _ mask,)* 3,axis=-1) 0.1 #生成纯色图像。白色蒙版图# fg _ image=np.zeros (image.shape,dtype=NP . uint 8)# fg _ image[3360]=mask _ color fg _ image=cv2 . CVT color(image,cv2。COLOR _ RGB 2 bgr)BG _ image=NP . zeros(image . shape,dtype=NP . uint 8)BG _ image[:]=BG _ COLOR output_image=NP . where(condition,fg_image,BG _ image)cv2 . im show(‘ output _ image ‘,output _ image)cv2 . wait key(0)# cv2 . im write(‘ selfie 0 . png ‘,output _ image)首先加载所需的第三方库,

BG_COLOR是纯色背景的RGB值。

MASK_COLOR是人像抠图的蒙版值,一般设置为纯白。

Model_selection=0模型选择,可选参数(0,1)

然后可以使用cv2.imread函数加载一张需要分割的图片,将色彩空间转换为RGB模式。预处理后的图片可以直接输入到self ie _ segmentation . process(image)函数中进行人像分割。

对于边缘分割,NP的最后一个参数越小。堆栈((结果。segmentation _ mask),* 3,axis=-1) 0.1,包含的边越多,可以自己试试。

Fg_image图片我们需要将图像绘制重新转换到BGR空间,使用np.where函数将人像区域与背景图片融合,最后显示抠图后的效果。

Google出品Mediapipe人像分割,可任意更换图片与视频背景当然,有时候我们需要一个背景图来代替。这里我们修改原始代码。

导入cv2导入媒体管道作为MP导入numpy作为npmp _ drawing=MP。解决方案。drawing _ utils MP _ self ie _ segmentation=MP。解决方案。自拍_分段#图片人物抠图: image _ FILES=[]# BG _ COLOR=(0,255,0) #背景颜色也可以使用其他的照片,要求与原照片尺寸一致BG _ image=cv2。我读(‘ 6。jpg ‘)MASK _ COLOR=(255,255,255) # mask图片颜色file=’1.jpg ‘带mp _自拍_分段。SelfieSegmentation(model _ selection=0)作为selfie _ segmentation : image=cv2。im read(file)image _ height,image_width,_=image.shape #在处理之前需要转换图片到RGB颜色空间image=cv2.cvtColor(image,cv2 .COLOR _ bgr 2 RGB)结果=自ie _分割。流程(图像)#在背景图像上绘制分割图#为了改善边界周围的分割,可以考虑在结果。分段_掩码进行双边过滤条件=NP。堆栈((结果。segmentation _ mask),* 3,axis=-1) 0.1 #生成纯色图像,白色的面具图纸#fg_image=np.zeros(image.shape,dtype=NP。uint 8)# fg _ image[:]=遮罩_颜色fg _ image=cv2。CVT颜色(图像,cv2 .COLOR _ RGB 2 bgr)# BG _ image=NP。零(图片。shape,dtype=NP。uint 8)# BG _ image[:]=BG _ COLOR output _ image=NP。其中(条件,fg_image,BG _ image)cv2。im show(‘输出图像’,输出图像)cv2。等待键(0)cv2。im写(‘自拍00。png ‘,输出_图像)运行代码的效果

Google出品Mediapipe人像分割,可任意更换图片与视频背景

实时视频分割

导入cv2导入媒体管道作为MP导入numpy作为npmp _ drawing=MP。解决方案。drawing _ utils MP _ self ie _ segmentation=MP。解决方案。self ie _ segmentation BG _ COLOR=(192,192,192) # graycap=cv2 .带mp _自拍_分段的视频捕获(0)cv2。等待键(2000)BG _ image=cv2。我读(‘ 6。jpg’).自我分割(模型选择=1)作为自拍_分段:而首都已打开():成功,image=cap。read()print(image。shape())如果不成功:打印(‘忽略空的相机帧.)继续图像=cv2。CVT颜色(cv2。翻转(图像,1),cv2 .COLOR _ bgr 2 RGB)图像。旗帜。可写=假结果=自拍_分段。过程(图像)图像。旗帜。可写=真实图像=cv2。CVT颜色(图像,cv2 .COLOR _ RGB 2 bgr)条件=NP。堆栈((结果。Segmentation _ mask),* 3,axis=-1) 0.1如果背景图片为无: BG _ image=NP。零(图片。shape,dtype=NP。uint 8)BG _ image[:]=BG _ COLOR output _ image=NP。where(condition,image,bg_image) cv2.imshow(‘MediaPipe自拍分割,输出_图像)如果cv2.waitKey(中视频实时分割的代码结构跟图片分割类似,主要需要注意的是打开摄像头后,会自动有一个帽子的图纸尺寸,这里我们读取的背景图片尺寸需要与摄像头的尺寸一致

首先我们打开摄像头,并加载一张背景图片,从摄像头中获取视频帧图片,对图片进行翻转与颜色空间的转换操作后,使用selfie_segmentation.process(图片)函数进行人像的分割,最后实时显示分割后的效果,当然也可把视频保存下来

视频加载中.

中间管道系列文章:

颠覆2D对象检测模型,媒体管道三维(three dimension的缩写)对象检测还原真实的对象特征

媒体管道表面检测可运行在移动设备上的亚毫秒级人脸检测

中间管道虹膜检测:实时虹膜跟踪和深度估计

利用深度学习进行网浏览器视频电话会议中的背景更换

利用机器学习,进行人体33个2D姿态检测与评估

利用机器学习,进行人手的21个三维(三维的缩写)手关节坐标检测

利用机器学习进行人脸468点的三维(三维的缩写)坐标检测,并生成三维(三维的缩写)模型

中间管道集成人脸识别,人体姿态评估,人手检测模型

剪辑教程

病虫害预测预报,病虫害防治发展方向

2022-6-2 19:38:00

剪辑教程

手机怎样把视频转换成gif格式(手机视频转换为gif)

2022-6-2 19:40:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索