如何用实例分割产生的mask图实现人像抠图和背景替换

最近在做一个人像分割的项目,来实现人像抠图和背景替换等功能
实例分割阶段,可以使用u2net来输出mask图,代码地址
下边为原图以及产生的mask图

在这里插入图片描述
在这里插入图片描述

然后我们找一张想要替换的背景图
在这里插入图片描述

import cv2

person = cv2.imread("原图")
back = cv2.imread("背景图")
#这里将mask图转化为灰度图
mask = cv2.imread("mask图",cv2.IMREAD_GRAYSCALE)
#将背景图resize到和原图一样的尺寸
back = cv2.resize(back,(person.shape[1],person.shape[0]))
#这一步是将背景图中的人像部分抠出来,也就是人像部分的像素值为0
scenic_mask =~mask
scenic_mask = scenic_mask  / 255.0
back[:,:,0] = back[:,:,0] * scenic_mask
back[:,:,1] = back[:,:,1] * scenic_mask
back[:,:,2] = back[:,:,2] * scenic_mask
#这部分是将我们的人像抠出来,也就是背景部分的像素值为0
mask = mask / 255.0
person[:,:,0] = person[:,:,0] * mask
person[:,:,1] = person[:,:,1] * mask
person[:,:,2] = person[:,:,2] * mask
#这里做个相加就可以实现合并
result = cv2.add(back,person)

cv2.imwrite("3.jpg",result)

下边为效果图
在这里插入图片描述

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iOS上使用OpenCV实现抠图背景替换功能是可行的。OpenCV是一个开源的计算机视觉库,它提供了各种像处理和分析技术,包括像分割和像合成等功能,非常适合进行背景替换。 具体实现步骤如下: 1. 导入OpenCV库:在iOS项目,首先需要将OpenCV库导入到项目,并进行相应的配置。 2. 像分割:使用OpenCV提供的像分割算法,如GrabCut算法,将目标对象与背景进行分离。该算法需要输入一张包含目标对象的像,并对其进行初始化,引导GrabCut算法进行分割。 3. 背景替换:根据分割得到的目标对象,将它与另一张背景像进行合成。可以使用OpenCV提供的透明度混合函数,将目标对象与背景像进行混合。具体操作是通过像素级的合成运算,计算目标对象像素与背景像像素之间的混合比例,从而实现替换背景的效果。 4. 后续处理:根据需求,可以对合成后的像进行调整和优化。例如,可以对合成后的像进行色彩调整、亮度调整或者模糊处理,以使合成的结果更加自然。 需要注意的是,在实现抠图背景替换功能时,选择合适的像分割算法和优化方法是非常重要的。这可能需要根据具体需求和实际情况进行调试和优化。 总结起来,使用iOS上的OpenCV库可以很好地实现抠图背景替换功能。通过像分割和背景替换等技术手段,可以将目标对象与不同的背景进行合成,实现抠图背景替换的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值