秒换证件照底色

现实生活中,不同证件上需要不同底色的照片。比如结婚需要的红色,身份证需要的白色,考试报名需要的蓝色。同时准备三种颜色的证件照也不是不可能,但是有时候迫于时间关系,又没有准备好照片的情况下,依靠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实现的秒换证件照底色相关推荐

  1. 取消wps右键菜单_原来Office和WPS都可以这样换证件照底色!1秒红蓝白底随意切换...

    证件照是我们在生活中经常要用到的东西,但是证件照的额底色有很多种,不同的情况下要用到的证件照底色也不同,如果跑去照相馆换底色的话比较麻烦,其实我们自己在家也能给证件照换底色,而且超级简单! 今天小编就 ...

  2. removebg包:一键抠图换证件照底色

    Remove.bg是一个利用AI智能抠图的网站,在这个网站上可以上传图片,然后实现自动抠图并更换背景等,如果不懂编程的可以直接登陆https://www.remove.bg/zh操作 Remove.b ...

  3. 证件照片如何换背景底色,3个免费制作证件照的方法,简单易学

    在日常生活中,我们经常需要用到证件照,比如:找工作需要简历上附带有证件照,还有办理学生证.身份证也需要提交证件照. 不同的平台有时候提交的要求(背景底色.大小等)也不一样,如果你不想每次都重拍,那么可 ...

  4. 电子证件照怎么换背景?怎样修改证件照底色?

    不同证件的证件照有背景颜色要求,一般我们会到照相馆重新拍照,或者使用ps来给证件照换底色,但是PS比较难操作,很多小伙伴都不会使用.所以今天小编分享一个在线证件照换背景的方法,利用我们浏览器来给证件照 ...

  5. 如何给证件照换背景底色?如何改变图片背景色?

    在平时工作.生活中,经常要用到证件照,不同用途的证件照对底色也有不同的要求,如果不想每次都去重新拍照,就需要自己学会给照片换背景底色,接下来小编就教大家一个证件照换背景(https://www.yas ...

  6. 证件照底色怎么修改?证件照换背景怎么换?

    提交报名照片时,相关方有时对照片的背景会有要求,比如要求为白色.红色.蓝色.浅蓝色等,如果自己的照片背景不符合要求就需要修改背景颜色.比如使用ps抠图来证件照换底色,其实可以试试压缩图的证件换背景(h ...

  7. 基于PaddleHub一键部署的图像系列Web应用服务

    基于PaddleHub一键部署的图像系列Web应用服务 思路过程 相关资源 1.Github源码:https://github.com/livingbody/AutoCutout 2.CSDN文章:h ...

  8. 如何把证件照底色变白?怎样更换电子版证件照底色?

    在平时生活中,我们在进行考试或者进行某些报名的时候,会要求我们提供证件照,以往需要去照相馆拍实体照片,现在随着科技的发展,已经越来越多的会支持电子版证件照了,只需要把电子版证件照提交上就可以,但是证件 ...

  9. 护士执业证注册照片底色怎么更换?照片换背景底色的方法

    许多小伙伴都要参加4月份的护士执业资格考试,这就需要用到证件照,当我们手上的证件照背景颜色不符合平台规定的时候,怎么去把照片换背景底色(https://www.yasuotu.com/colorepl ...

最新文章

  1. Java Instant类
  2. labelme2coco问题:TypeError: Object of type 'int64' is not JSON serializable
  3. 【转】Postman系列二:Postman中get接口实战讲解(接口测试介绍,接口测试流程,头域操作)
  4. 真安卓机皇!华为P30 Pro包揽《智能硬件质量报告》多项大奖
  5. 《DSP using MATLAB》示例Example4.2
  6. Chrome浏览器设置中文系统语言
  7. sci的figure怎么做_论文攻略丨SCI论文插图怎么做?有这一篇文章就够了
  8. 新零售全渠道营销,线上经营,线下成长
  9. python图片旋转成水平_python之批量使图片水平翻转
  10. 保存网页内容 自动过滤广告和网页头尾
  11. 1077: 空心菱形
  12. 【docker】镜像
  13. 蓝牙AOA高精度定位基站原厂深圳核芯物联科技参加2021中国国际高新技术成果交易会诚邀生态合作伙伴莅临交流指导2021.12.27-29深圳宝安国际会展中心11号馆
  14. OS X系统 手势终极设置方法+BetterTouchTool详细设置中文翻译
  15. 逆时针螺旋矩阵的学习
  16. small用于不连续数组_太神奇了,large和small这两个最值函数居然可以这样使用!...
  17. CSS 中的边框和轮廓属性
  18. AutoRunner如何在对象库中添加新的对象而不改变脚本
  19. ppst 技术视频——oracle 性能优化
  20. 中望3D 2020中文版

热门文章

  1. 程序员数学(17)–勾股定理
  2. 高颜值无线蓝牙耳机,南卡N2S芯片强劲音质好,还能当充电宝用
  3. 阿里云移动数据分析服务功能与应用场景
  4. 现在已经有越来越多的人开始投身到了深度介入产业,真正拥抱互联网
  5. revit 二次开发 链接CAD文件读取
  6. Windows10 安装spyder3
  7. 三角定位PHP实现,自己琢磨出来的三角定位法,还真有这么回事
  8. Mac相机不可用怎么办?教你恢复相机连接的方法
  9. 基音提取之短时自相关法
  10. 基于ssm的个人博客系统的设计与实现(含源文件)