由知乎看到了AI换脸软件Deepfake所受启发,在我现有水平基础上,看看能不能先写一个程序实现抠图,把人像或物象的所要部分抠出来,弄成透明的png图像,也是PS抠图操作的基本流程,现在发现Python完成只要两行代码一秒搞定,好牛,然后就再加工给它添加背景颜色或者高级点添加背景图片合成,这样就达到了“想去哪就去哪”的PS效果,而且是秒杀PS操作,能抢别人的饭碗了,牛批。前者很简单,只添加个背景颜色,网上有大量的教程可自寻解答,后者我在网上找了好久才找到透明图和实体图合并的较准确方法,然后封装为自己所用,分享出来,欢迎广大读者朋友们订阅和点赞支持一下谢谢,以下干货:
第一步抠图,安装removebg别人写好的库
from removebg import RemoveBg
然后读取目标图片保存为透明图片在本地,三种目标图片读取方式,一是读取本地图片( remove_background_from_img_file),二是读取网络地址图片(remove_background_from_img_url),三是读取图片转换为的base64字符串(remove_background_from_base64_img),都可从源码获取,我这里采用第一种
rg=RemoveBg("你的api_key","error.log")
rg.remove_background_from_img_file(img_path)
这里要去https://www.remove.bg/这个官网上注册下你的帐号,然后把key传入api,指定下log文件路径。总共能免费转50个图,用完后调一次接口收费一块。
因为我是拿自己照片做的实战,没办法为了显示生动活泼的效果只好英勇献身了。
原图:
抠图后:
效果不赖吧,看边缘锐利度,比手工抠省时省力多了
然后就是添加背景图了(蒙多,想去哪就去哪)
pip install pillow,专门绘图的强大的库
from PIL import Image# 加载刚才透明的抠好的图片base_img = Image.open(r'2.jpg_no_bg.png')
# 新建透明底图,大小和抠好的图一样大小,mode使
用RGBA,保留Alpha透明度,颜色为透明
# Image.new(mode, size, color=0),color可以用
tuple表示,分别表示RGBA的值
target=Image.new('RGBA',base_img.size,(0,0,0,0))# 指定透明区域,只要知道图像像素按需调整即可box = (0,-100,698,889)# 加载实体背景图region = Image.open(r'c.jpg')# 确保图片是RGBA格式,大小和box区域一样region = region.convert("RGBA")# 先将实体背景像合成到底图上target.paste(region, box)
# 将透明图覆盖上去,透明区域将背景图像显示出来。
# 第一个参数表示需要粘贴的图像,中间的是坐标,
最后是一个是mask图片用于指定透明区域显示底图。
target.paste(base_img, (0, 0), base_img)
target.show()
target.save('out.png') # 保存图片
第三步所得图像结果,我在网上找了张埃菲尔铁塔
虽然人像有一点光晕轮廓,但是不耽误它快准好呀。
That's all,当然也可以抠出虫鸟花兽等物象图,拿我的源码可以去某宝某鱼或威客网上PS制图抢别人饭碗了,现在你也是个PS大神~以前自己P张图要半天,现在秒抠秒合成,不得不说Python很强大,日新月异。
有不懂的问题欢迎在本微信公众号后台发送消息或加我好友(左上角作者)问我。
纯手打原创,实用又好玩,欢迎订阅关注下本微信公众号和点个右下角在看,后续更多精彩文章不容错过,欢迎转发,转载请联系我谢谢!