python实现证件照换底功能


Posted in Python onAugust 20, 2019

本来是在找交通识别的程序,然后凑巧看见了证件照换底,于是学习了一下~一开始在网上找了一个很普遍写的程序,但是效果并不好,想要放弃了,然后看见了这个,参考:python opencv实现证件照换底功能

本人基于此做了一些改进,便于自己运行和调试,还加了中值滤波,本人觉得效果还不错~

代码:

import cv2
import numpy as np
 
def cvtBackground(path,color):
 """
 功能:给证件照更换背景色(常用背景色红、白、蓝)
 输入参数:path:照片路径
 color:背景色 <格式[B,G,R]>
 """
 im=cv2.imread(path)
 im_hsv=cv2.cvtColor(im,cv2.COLOR_BGR2HSV) #BGR和HSV的转换使用 cv2.COLOR_BGR2HSV
 #aim=np.uint8([[im[0,0,:]]])
 #hsv_aim=cv2.cvtColor(aim,cv2.COLOR_BGR2HSV)
 mask=cv2.inRange(im_hsv,np.array([im_hsv[0,0,0]-5,100,100]),np.array([im_hsv[0,0,0]+5,255,255])) #利用cv2.inRange函数设阈值,去除背景部分
 mask1=mask      #在lower_red~upper_red之间的值变成255
 img_median = cv2.medianBlur(mask, 5) #自己加,中值滤波,去除一些边缘噪点
 mask = img_median
 mask_inv=cv2.bitwise_not(mask) 
 img1=cv2.bitwise_and(im,im,mask=mask_inv) #将人物抠出
 bg=im.copy()
 rows,cols,channels=im.shape
 bg[:rows,:cols,:]=color
 img2=cv2.bitwise_and(bg,bg,mask=mask) #将背景底板抠出
 img=cv2.add(img1,img2)
 image={'im':im,'im_hsv':im_hsv,'mask':mask1,'img':img,'img_median':img_median}
 cv2.startWindowThread() #加了这个后在图片窗口按Esc就可以关闭图片窗口
 for key in image:
 cv2.namedWindow(key)
 cv2.imshow(key,image[key])
 cv2.waitKey(0)
 cv2.destroyAllWindows()
 return img
#test
if __name__=='__main__':
 img=cvtBackground('3.jpg',[0,0,180])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中使用smtplib和email模块发送邮件实例
Apr 22 Python
python在不同层级目录import模块的方法
Jan 31 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
python字符串连接方法分析
Apr 12 Python
Python编写电话薄实现增删改查功能
May 07 Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
简单了解Python3里的一些新特性
Jul 13 Python
python 动态迁移solr数据过程解析
Sep 04 Python
基于python实现图片转字符画代码实例
Sep 04 Python
pytorch多进程加速及代码优化方法
Aug 19 #Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 #Python
python opencv实现证件照换底功能
Aug 19 #Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 #Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 #Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 #Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 #Python
You might like
中篇:安装及配置PHP
2006/12/13 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
python简单猜数游戏实例
2015/07/09 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
python抓取文件夹的所有文件
2018/02/27 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
几个MySql的面试题
2013/04/22 面试题
个人简历中自我评价
2014/02/11 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
同学聚会通知短信
2015/04/20 职场文书
二胎满月酒致辞
2015/07/29 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python