如何用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

猜你喜欢

转载自blog.csdn.net/2301_76253447/article/details/129909968
今日推荐