基于Paddlehub实现的秒换证件照底色
秒换证件照底色
现实生活中,不同证件上需要不同底色的照片。比如结婚需要的红色,身份证需要的白色,考试报名需要的蓝色。同时准备三种颜色的证件照也不是不可能,但是有时候迫于时间关系,又没有准备好照片的情况下,依靠PhotoShop手动处理旧照片或者是出门拍一张照片需要一定的时间,还要一定的软件使用技能。
这个时候,AI自动处理图像的优势就显现出来了。速度快,效果好,操作成本低(将本程序封装成exe)。
在此之前,先介绍一个线上的AI平台百度飞浆PaddlePaddle
PaddlePaddle
AI,很多人第一反应就是高门槛,要面对复杂的网络结构与框架、算法调优、支付昂贵的物理设备费用(GPU)。百度飞浆PaddlePaddle都能解决这些问题,提供线上的运行环境,高质量的教学课程
本项目就是通过飞浆的一个工具——Paddlehub实现。下面回归正题
模型概述
DeepLabv3+ 是Google DeepLab语义分割系列网络的最新作,其前作有 DeepLabv1, DeepLabv2, DeepLabv3。在最新作中,作者通过encoder-decoder进行多尺度信息的融合,同时保留了原来的空洞卷积和ASSP层, 其骨干网络使用了Xception模型,提高了语义分割的健壮性和运行速率,在 PASCAL VOC 2012 dataset取得新的state-of-art performance。该PaddleHub Module使用百度自建数据集进行训练,可用于人像分割,支持任意大小的图片输入。
代码实现
首先声明的是,此项目运行环境是Paddle上的AI studio。所以代码以jupyter的风格展示。
#安装对应版本的paddlehub
!pip install paddlehub==1.6.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
#照片选择
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
#pycharm环境下可以取消注释,以UI界面方式选择图片
#import win32ui
#paddlehub 不支持UI界面选择照片文件路径,这里以输入的方式做测试
#dlg = win32ui.CreateFileDialog(1)
#dlg.SetOFNInitialDir('C:/')
#dlg.DoModal()
#photo_path = dlg.GetPathName()photo_path = ['lyh.jpg']#显示选择的图片
img = mpimg.imread(photo_path[0])
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()
运行结果:
加载模型
paddlehub上的预训练模型:deeplabv3p_xception65_humanseg
这一步是为了实现抠取图片的人像部分
import paddlehub as huboutput_path = 'output'
module = hub.Module(name="deeplabv3p_xception65_humanseg")
input_dict = {"image": photo_path}
results = module.segmentation(data=input_dict,visualization=True,output_dir=output_path)
#显示处理好的图片
import glob
import os
img_path = glob.glob(os.path.join(output_path, '*.png'))
img_path.sort()for path in img_path:img= mpimg.imread(path)plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()
运行结果:
图片中除人像部分其实都是透明的,这里显示为白色。
换底色处理
from PIL import Image#定义证件照底色RGB值
blue = 0,191,243
red = 255,0,0
white =255,255,255
#底色默认值
color = 0,0,0
your_choice=input("你想要的证件照底色")
if your_choice =="red":color = red
elif your_choice == "white":color = white
elif your_choice == "blue":color = blue
else:color=whiteprint("颜色不正确,默认白")
#填充图片A通道,即透明部分
img =Image.open(img_path[0])
finish_path = img_path[0]+"_finish.png"
x, y = img.size
p = Image.new('RGBA', img.size, (color))
p.paste(img, (0, 0, x, y), img)
p.save(finish_path)img = mpimg.imread(finish_path)
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.axis('off')
plt.show()
运行结果
总结
其实整体思路就是抠取人像后,对图片的A通道填充想要的颜色。
项目的出发点是操作方便且不需要专业技能,可以封装一个exe版本,运用easy_install实现,这里不作实现。
这里感谢李彦宏先生的照片。
同类对比
去年流行的一个python库函数removebg,它是以去除背景为出发点。在处理图像上也有很优秀的表现。唯一的缺点就是不能“白嫖!”,使用此库函数需要注册账号,获得API的使用次数。超过一定的次数需要付费(不便宜)。
下面放出一段由removebg实现的代码:
from removebg import RemoveBg
from PIL import Image
locat = "C:/Users/acer/Desktop"
name = input("请输入图片文件名")
new = '/new'
blue = 0,0,255
white = 255,255,255
red = 255,0,0
cloro = 0,0,0
def get_photo(locat,name):try:API = '1DccssUWFceWoomRBuTs1sV6'rmb = RemoveBg(API,'error.log')t= '/'all = locat+t+nameprint("操作中,请等待二十秒....")rmb.remove_background_from_img_file(all)temp = '_no_bg.png'all = all+tempreturn allexcept:print("API或者图片路径有误,请重新启动程序")
def chang_backgound():img = Image.open(get_photo(locat,name))x, y = img.sizeprint("请选择要添加的背景色")a = input("红色:red 蓝色: blue 白色:white 黑色:black\n")if(a == 'red'):cloro = redif(a == 'blue'):cloro = blueif(a == 'white'):cloro = whiteif (a == 'black'):cloro = 0,0,0p = Image.new('RGBA', img.size, (cloro))p.paste(img, (0, 0, x, y), img)p.save(locat+new+name+'.png')print("操作成功,处理后的图片路径为:%s"%locat+new+name)chang_backgound()
以封装exe可执行文件为出发点,选择PaddlePaddle版本的程序是最合适的,相当于永久免费使用的程序。
当然,除了图像分割,PaddlePaddle还支撑CV、NLP、REC、SPEECH方面的开发研究。
项目地址
AI Studio:https://aistudio.baidu.com/aistudio/projectdetail/749857
END
基于Paddlehub实现的秒换证件照底色相关推荐
- 取消wps右键菜单_原来Office和WPS都可以这样换证件照底色!1秒红蓝白底随意切换...
证件照是我们在生活中经常要用到的东西,但是证件照的额底色有很多种,不同的情况下要用到的证件照底色也不同,如果跑去照相馆换底色的话比较麻烦,其实我们自己在家也能给证件照换底色,而且超级简单! 今天小编就 ...
- removebg包:一键抠图换证件照底色
Remove.bg是一个利用AI智能抠图的网站,在这个网站上可以上传图片,然后实现自动抠图并更换背景等,如果不懂编程的可以直接登陆https://www.remove.bg/zh操作 Remove.b ...
- 证件照片如何换背景底色,3个免费制作证件照的方法,简单易学
在日常生活中,我们经常需要用到证件照,比如:找工作需要简历上附带有证件照,还有办理学生证.身份证也需要提交证件照. 不同的平台有时候提交的要求(背景底色.大小等)也不一样,如果你不想每次都重拍,那么可 ...
- 电子证件照怎么换背景?怎样修改证件照底色?
不同证件的证件照有背景颜色要求,一般我们会到照相馆重新拍照,或者使用ps来给证件照换底色,但是PS比较难操作,很多小伙伴都不会使用.所以今天小编分享一个在线证件照换背景的方法,利用我们浏览器来给证件照 ...
- 如何给证件照换背景底色?如何改变图片背景色?
在平时工作.生活中,经常要用到证件照,不同用途的证件照对底色也有不同的要求,如果不想每次都去重新拍照,就需要自己学会给照片换背景底色,接下来小编就教大家一个证件照换背景(https://www.yas ...
- 证件照底色怎么修改?证件照换背景怎么换?
提交报名照片时,相关方有时对照片的背景会有要求,比如要求为白色.红色.蓝色.浅蓝色等,如果自己的照片背景不符合要求就需要修改背景颜色.比如使用ps抠图来证件照换底色,其实可以试试压缩图的证件换背景(h ...
- 基于PaddleHub一键部署的图像系列Web应用服务
基于PaddleHub一键部署的图像系列Web应用服务 思路过程 相关资源 1.Github源码:https://github.com/livingbody/AutoCutout 2.CSDN文章:h ...
- 如何把证件照底色变白?怎样更换电子版证件照底色?
在平时生活中,我们在进行考试或者进行某些报名的时候,会要求我们提供证件照,以往需要去照相馆拍实体照片,现在随着科技的发展,已经越来越多的会支持电子版证件照了,只需要把电子版证件照提交上就可以,但是证件 ...
- 护士执业证注册照片底色怎么更换?照片换背景底色的方法
许多小伙伴都要参加4月份的护士执业资格考试,这就需要用到证件照,当我们手上的证件照背景颜色不符合平台规定的时候,怎么去把照片换背景底色(https://www.yasuotu.com/colorepl ...
最新文章
- Java Instant类
- labelme2coco问题:TypeError: Object of type 'int64' is not JSON serializable
- 【转】Postman系列二:Postman中get接口实战讲解(接口测试介绍,接口测试流程,头域操作)
- 真安卓机皇!华为P30 Pro包揽《智能硬件质量报告》多项大奖
- 《DSP using MATLAB》示例Example4.2
- Chrome浏览器设置中文系统语言
- sci的figure怎么做_论文攻略丨SCI论文插图怎么做?有这一篇文章就够了
- 新零售全渠道营销,线上经营,线下成长
- python图片旋转成水平_python之批量使图片水平翻转
- 保存网页内容 自动过滤广告和网页头尾
- 1077: 空心菱形
- 【docker】镜像
- 蓝牙AOA高精度定位基站原厂深圳核芯物联科技参加2021中国国际高新技术成果交易会诚邀生态合作伙伴莅临交流指导2021.12.27-29深圳宝安国际会展中心11号馆
- OS X系统 手势终极设置方法+BetterTouchTool详细设置中文翻译
- 逆时针螺旋矩阵的学习
- small用于不连续数组_太神奇了,large和small这两个最值函数居然可以这样使用!...
- CSS 中的边框和轮廓属性
- AutoRunner如何在对象库中添加新的对象而不改变脚本
- ppst 技术视频——oracle 性能优化
- 中望3D 2020中文版