证件照在线生成源代码
起因
这段时间很火的证件照在线生成技术很是火,所以研究了一下这项技术,原本以为只需要用扣扣人物换一张底色即可,但并非如此,实践证明用python的OpenCV技术来实现非常不理想。一下是我找到的几种证件照换底色代码。
实现代码
第一种:
import cv2
import numpy as npimg=cv2.imread('timg.jpg')
#缩放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
cv2.imshow('img',img)#转换hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([90,70,70])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)#腐蚀膨胀
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)#遍历替换
for i in range(rows):for j in range(cols):if dilate[i,j]==255:img[i,j]=(0,0,255)#此处替换颜色,为BGR通道
cv2.imshow('res',img)cv2.waitKey(0)
cv2.destroyAllWindows()
最终效果
整体布局情况下还是容易扣出但是一般就失去了证件照真正的意义(既然自己原本就是一张蓝色图片换成红色也基本上没必要)。
技术难度
这项技术主要难度就在于抠出人体范围,如何告诉程序这个范围在那一块,如果是背景单色的请客下很容易识别出来,但是复杂情况下就是很糟糕的一种情况了,这里我找到了一款百度AI发布的一款不错的产品百度人像分割 ,通过分割复杂情况下背景来最后分出人像部分。
这里感觉还不错,能分割复杂场景下的图片
import cv2
import base64
import numpy as np
import timefrom aip import AipBodyAnalysis# 在百度云中申请,每天各接口有 500 次调用限制.
startTime = time.time()
APP_ID = '****'
API_KEY = '****'
SECRET_KEY = '****'client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)imgfile = 'test2.jpg'
ori_img = cv2.imread(imgfile)
height, width, _ = ori_img.shapewith open(imgfile, 'rb') as fp:img_info = fp.read()seg_res = client.bodySeg(img_info)
labelmap = base64.b64decode(seg_res['labelmap'])
nparr = np.fromstring(labelmap, np.uint8)
labelimg = cv2.imdecode(nparr,1)
labelimg = cv2.resize(labelimg,(width,height), interpolation=cv2.INTER_NEAREST)
new_img = np.where(labelimg==1, 255, labelimg)
maskfile = imgfile.replace('.jpg', '_mask.png')
cv2.imwrite(maskfile, new_img)res_imgfile = imgfile.replace('.jpg', '_res.jpg')
result = cv2.bitwise_and(ori_img, new_img)
cv2.imwrite(res_imgfile, result)
endTime = time.time()
print("useTime: ", endTime-startTime)
print('Done.')
————————————————
版权声明:本文为CSDN博主「echo_1994」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/echo_1994/article/details/84317833
这是echo_1994博主给出的具体调用代码
目前最好的效果
但是根据测试往往很多地方如 不清晰,图片不正等情况下或者证件照尺寸等问题还是解决不了这个问题,后来百度后找到了一款在线生成证件照的几家平台,个人感觉在线生成证件照(https://www.taobaxiu.com)这个服务平台算是目前不错的,我体验了一下(源代码收费)。
(对比效果图)
虽然运行时间稍微有点久,但是自动抠出来的效果整体还是不错的,并且能准确识别背景以及座椅等复杂情况下的图片,据说有美颜功能等等。
总结
无论是在线生成证件照还是用python实现的代码,无非就是一个能够看谁更加精准的分离人像,至于替换证件照背景是很简单的事情。
证件照在线生成源代码相关推荐
- 软著申请60页的源代码文档在线生成工具
1.首先访问网站软著代码在线生成工具 - 软著生成word - word生成 2.在对应的软件名称版本号和公司名称处填写,此处主要设置的就是word中的页眉和页脚. 3.将有效源代码整理到一个文件夹中 ...
- 如何自制证件照?怎么在线生成证件照?
现在使用证件照的场合越来越多了,很多小伙伴还不知道怎么证件照制作(https://www.yasuotu.com/zjzzz)的方法,所以今天小编就带给大家一个可以在线生成证件照的简易攻略,看完下面的 ...
- 微名片php源码,mingpian 微名片源码。在线生成 . . WEB(ASP,PHP,...) 240万源代码下载- www.pudn.com...
文件名称: mingpian下载 收藏√ [ 5 4 3 2 1 ] 开发工具: PHP 文件大小: 19370 KB 上传时间: 2015-07-04 下载次数: 0 提 供 者: ju ...
- Asp.Net Core在线生成二维码
前言: 原先用zxing Code写过基于Winfrom的批量生成二维码工具,以及单个生成二维码工具:批量生成二维码Gihub源代码 今天尝试用QRCoder 加 Asp.Net Core 写了一个在 ...
- 打开json文件的工具_Flutter中JSON转Model——在线生成
在开发过程中,我们一般都是使用插件或工具一键生成实体类的,这样极大的提高了开发效率,目前我们可以通过在线生成的方式来一键生成Dart类. 1. 使用json_to_dart 地址: https://j ...
- 手把手教你使用 Java 在线生成 pdf 文档
一.介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票.订单的库存打印单.各种电子签署合同等等,以方便用户查 ...
- Java语言使用注解处理器生成代码——第三部分:生成源代码
原文作者:deors 原文地址:https://deors.wordpress.com/2011/10/31/annotation-generators/ 译文作者:Jianan - qinxiand ...
- 应用体验:证件照一键生成
应用体验:证件照一键生成 本项目主要是为了方便大家照不那么严格的证件照,纯自助,只要拿手机一拍,在"应用体验"页面上传,项目自动抠图和排版,再下载下来的就是符合背景色要求的证件照了 ...
- 生日快乐程序_亲爱的陕师大:75岁生日快乐!一起走过师大时光,在线生成你的师大印迹!...
终南山下 曲江池畔 栉风沐雨 杏坛砥柱 扎根西部 初心不忘 教育报国 使命牢记 薪火相传 桃李晖光 风光雨霁 盛世华章 厚德积学 励志敦行 传承西部红烛精神 抱道不曲 拥书自雄 同心共赴时代荣光 今天 ...
最新文章
- 为x86 CPU自动调度神经网络
- centos中用MySQL创建新表_CentOS下使用Shell批量创建数据库表
- python学习笔记(五)——函数基础和函数参数
- 创建水印文字_推荐免费物业现场品质管理新工具—马克水印相机
- 在linux下使用udev获取热插拔(hotplug)事件
- 阿里云MVP:如何设计实现一个通用的微服务架构?
- 获取两个数据的交集_Redis学习笔记统计该如何选择数据类型
- centos7网卡编辑_Centos7修改网卡名称
- 区间DP lightoj 1422
- Vue:vue中axios发起http请求报错net::ERR_CERT_DATE_INVALID
- Quartus prime工程中各种文件的后缀及意义
- java 自然周_java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期...
- Windows7 Embedded Standard x64更新代码80072EFE解决方法
- Java并发编程艺术
- 批处理(.bat)文件
- seata适配人大金仓(kingbase8)数据库
- mp4视频 一帧字节大小
- Error creating bean with name ‘BAdminMapper‘ defined in file [C:\Users\ASUS\Desktop\FleakMarket-mast
- linux小白命令,linux命令---小白笔记
- QT上实现FTP传输