原理:
python的函数库Image是个非常强大的数据库,拥有很多处理图片的功能,像是P图软件一样。当我们想要实现把人P到另一张背景的操作时,我们就需要先把人给扣出来,再粘到背景上。抠图,我们需要先准备好绿色背景的图片。用Image里的convert函数把图片的RGB格式改为RGBA(A就是透明度参数),把偏绿色的像素点的透明度参数A赋值为0(即透明),就可以实现抠图的操作。再用paste函数把两张图片粘在一起即可。
文章来源地址https://www.toymoban.com/news/detail-581809.html
具体操作:
第一步:准备好两张图片
第一张(要扣的图,必须是绿色背景):
文章来源:https://www.toymoban.com/news/detail-581809.html
第二张(背景):
第二步:
打开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') #保存为最后的图片
代码分两个部分,一个是抠图,一个是把背景和扣好的图粘在一起
抠完图的效果是这样的:
注意!保存格式一定要是png,png可以显示透明度,jpg格式是不能显示透明度的。
效果图:
到了这里,关于如何用python抠图和切换背景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!