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文件和目录操作详解
Feb 08 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
Python分析学校四六级过关情况
Nov 22 Python
python自动化测试之如何解析excel文件
Jun 27 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Jupyter Notebook的连接密码 token查询方式
Apr 21 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
使用django自带的user做外键的方法
Nov 30 Python
详解python字符串驻留技术
May 21 Python
TensorFlow的自动求导原理分析
May 26 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
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
如何基于python实现归一化处理
2020/01/20 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
了解一下python内建模块collections
2020/09/07 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
Django多个app urls配置代码实例
2020/11/26 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
教学实验楼管理制度
2014/02/01 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
物业管理专业求职信
2014/06/11 职场文书
2015新学期开学寄语
2015/02/26 职场文书
团员年度个人总结
2015/02/26 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python