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随机生成数据后插入到PostgreSQL
Jul 28 Python
python编程线性回归代码示例
Dec 07 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
python 读取修改pcap包的例子
Jul 23 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
Python3批量创建Crowd用户并分配组
May 20 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
Python time库的时间时钟处理
May 02 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
PHP中include()与require()的区别说明
2010/03/10 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
js change,propertychange,input事件小议
2011/12/20 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
幼教个人求职信范文
2013/12/02 职场文书
《太阳》教学反思
2014/02/21 职场文书
求职自荐信的格式
2014/04/07 职场文书
庆六一活动总结
2014/08/29 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
2015年超市工作总结
2015/04/09 职场文书
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
Java 定时任务技术趋势简介
2022/05/04 Java/Android