如何用python抠图和切换背景

原理:

python的函数库Image是个非常强大的数据库,拥有很多处理图片的功能,像是P图软件一样。当我们想要实现把人P到另一张背景的操作时,我们就需要先把人给扣出来,再粘到背景上。抠图,我们需要先准备好绿色背景的图片。用Image里的convert函数把图片的RGB格式改为RGBA(A就是透明度参数),把偏绿色的像素点的透明度参数A赋值为0(即透明),就可以实现抠图的操作。再用paste函数把两张图片粘在一起即可。

学会这个自己在家也能做红蓝底的大头照啦!

具体操作:

第一步:准备好两张图片

        第一张(要扣的图,必须是绿色背景):

e82aeb9fa9cf45bea77de0be35cc8974.jpeg

        第二张(背景):

e4bb7bb2d16541fe9b2c1d6e7ebeca45.jpeg

第二步:

打开python编辑环境,我用的是Anacondo

第三步:

输入以下代码:

from PIL import Image  #引用PIL里的Image函数
kun=Image.open('kun.jpg') #获取图片'kun.jpg'
background=Image.open('background.jpeg') #获取图片'background.jpg'
kun=kun.convert('RGBA') #把图片格式转化为RGBA
w,h=kun.size  #取出图片大小参数
for x in range(0,w): #遍历图片的每一个像素点
    for y in range(0,h):
        r,g,b,a=kun.getpixel((x,y)) #取出每个像素点的颜色和透明度参数
        if (g+1)/(r+g+b+3)>0.4 and g>60: #如果像素点偏绿色
            a=0  #把像素点的透明度设为0,也就是完全透明
            kun.putpixel((x,y),(r,g,b,a))  #修改图片像素的参数
kun.save('kun.png') #把抠好的图保存为'kun.png'


background.paste(kun,(640,250),mask=kun.split()[3])  #把背景和图片粘贴在一起
background.save('final.jpg')  #保存为最后的图片

代码分两个部分,一个是抠图,一个是把背景和扣好的图粘在一起

抠完图的效果是这样的:

3307bcd2589a43e8b3b4fa8bb251a4c1.png

 注意!保存格式一定要是png,png可以显示透明度,jpg格式是不能显示透明度的。

效果图:

7dbda9385b584551acf5df180edcf453.jpeg

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值