用飞桨,每个人都可以是影流之主[PaddleSeg]

本文介绍了如何使用PaddleSeg实现类似游戏中影流之主的分身特效,通过人像分割和平移复制,最终达到视觉上的分身效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

项目地址

项目介绍

第一步:把人分割出来

第二步:把人像平移制作分身

你可以在这里看到效果


 

项目地址

项目介绍

虽然我没玩过LOL,但是却听说过影流之主,这一切还都是因为......

这妖娆的身姿,这鬼畜的动效,阿这......

看得我.....也想来跳一段了,咳咳

据说这个是开了分身特效,但是作为一名合格的炼丹师,当然要自己实现这个效果

特效软件一边去,什么神剪手\pr的统统给我让开,我要自己实现这个效果

现在来分解一下任务:

第一步:把人分割出来

第二步:把人像左右平移,制作出两个分身

效果大致是从

的过程

第一步把人分割出来

就不用这么麻烦啦,paddleseg里面提供了人像分割的模型,而且官方非常贴心的给了样例程序图片视频都有,这个只要配好环境一般来说没有问题

git clone --depth=1 https://github.com/PaddlePaddle/PaddleSeg

cd PaddleSeg && git fetch --unshallow

cd PaddleSeg/contrib/HumanSeg/

第二步:把人像平移制作分身

这一步其实有很多种方案,最开始我是打算用平移卷积做的,后来懒了直接拼吧。下面大致讲一下思路

因为多个人像会重叠,肯定不可以使用直接加和的方式,但受到拼接人像和背景的方法的启发

$Image_{target} = Mask_{human} * Image_{origin} + (1 - Mask_{human}) * Image_{background}$

a.在最后拼接多个人物的图和背景时需要一个多个人物的mask,所以可以将原始的单人mask向左右平移后,在对应元素位置上使用或操作,来得到这样的一张多人mask

b.多个人像拼接的方式采用类似最后拼接的方式

$Image_{target}^{'} = f_{translation}(Image_{target}) * (1 - Mask_{human}) + Mask_{human} * Image_{origin}$

这里我懒一些,建了个很大的array作为底板,然后剪裁作为结果

h, w, _ = frame.shape
newMask = np.zeros([h, w * 3, 3])
newRes = np.zeros([h, w * 3, 3])

newMask[:, w - index : 2 * w - index, :] = np.logical_or(newMask[:, w - index : 2 * w - index, :],img_matting).astype(np.float32)
newMask[:, w + index : 2 * w + index, :] = np.logical_or(newMask[:, w + index : 2 * w + index, :],img_matting).astype(np.float32)
newMask[:, w: 2 * w, :] = np.logical_or(newMask[:, w: 2 * w, :],img_matting).astype(np.float32)

newRes[:,w - index : 2 * w - index, :] = newRes[:,w - index : 2 * w - index, :] * (1 - img_matting) + img_matting * frame
newRes[:,w + index : 2 * w + index, :] = newRes[:,w + index : 2 * w + index, :] * (1 - img_matting) + img_matting * frame
newRes[:,w : 2 * w,:] = newRes[:,w : 2 * w,:] * (1 - img_matting) + img_matting * frame

res = (newRes[:, w : w * 2, :] + (1 - newMask[:, w : w * 2, :]) * frame).astype(np.uint8)

你可以在这里看到效果

飞桨PaddleSeg影流之主效果代码实现效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值