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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
Python 列表反转显示的四种方法
Nov 16 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
PyQt5中QSpinBox计数器的实现
Jan 18 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
SMARTY学习手记
2007/01/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
PHP7 新增常量
2021/03/09 PHP
js以对象为索引的关联数组
2010/07/04 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
javascript this详细介绍
2016/09/19 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
详细解析Python中的变量的数据类型
2015/05/13 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
Sql面试题
2013/03/20 面试题
入职担保书怎么写
2014/05/12 职场文书
本科生自荐信
2014/06/18 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
mysql优化
2021/04/06 MySQL
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
使用MybatisPlus打印sql语句
2022/04/22 SQL Server
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python