python opencv实现证件照换底功能


Posted in Python onAugust 19, 2019

本文实例为大家分享了python opencv实现证件照换底功能的具体代码,供大家参考,具体内容如下

思路:先转到HSV空间,利用颜色提取背景制作掩模版mask,然后通过按位操作提取人像和制作新背景,最后叠加背景和人像得到换底后照片

代码

#-*-coding:utf-8-*-
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)
  aim=np.uint8([[im[0,0,:]]])
  hsv_aim=cv2.cvtColor(aim,cv2.COLOR_BGR2HSV)
  mask=cv2.inRange(im_hsv,np.array([hsv_aim[0,0,0]-5,100,100]),np.array([hsv_aim[0,0,0]+5,255,255]))
  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':mask,'img':img}
  for key in image:
    cv2.namedWindow(key)
    cv2.imshow(key,image[key])
  cv2.waitKey(0)
  return img
#test
if __name__=='__main__':
  img=cvtBackground('./photo.jpg',[0,0,180])

结果

python opencv实现证件照换底功能

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

Python 相关文章推荐
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
Python多进程机制实例详解
Jul 02 Python
关于Python 3中print函数的换行详解
Aug 08 Python
tensorflow获取变量维度信息
Mar 10 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
对Python 内建函数和保留字详解
Oct 15 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
python通过新建环境安装tfx的问题
May 20 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
pytorch使用指定GPU训练的实例
Aug 19 #Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 #Python
pytorch 更改预训练模型网络结构的方法
Aug 19 #Python
You might like
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
php中curl使用指南
2015/02/05 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
图像替换新技术 状态域方法
2010/01/28 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
基于canvas实现手写签名(vue)
2020/05/21 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python异步存储数据详解
2019/03/19 Python
Django框架实现的分页demo示例
2019/05/25 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
一道Delphi上机题
2012/06/04 面试题
文员的职业生涯规划发展方向
2014/02/08 职场文书
工艺员岗位职责
2014/02/11 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
神农溪导游词
2015/02/11 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
go xorm框架的使用
2021/05/22 Golang