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 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
python抽象基类用法实例分析
Jun 04 Python
Python守护线程用法实例
Jun 23 Python
python 数据的清理行为实例详解
Jul 12 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
浅谈Python type的使用
Nov 19 Python
解决Python使用列表副本的问题
Dec 19 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 Python
python神经网络编程之手写数字识别
May 08 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生成静态html文件的三种方法
2013/06/18 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
python创建临时文件夹的方法
2015/07/06 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
CSMA/CD介质访问控制协议
2015/11/17 面试题
《识字五》教学反思
2014/03/01 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
质量承诺书格式范文
2015/04/28 职场文书
航班延误投诉信
2015/07/02 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书