python实现抠图给证件照换背景源码


Posted in Python onAugust 20, 2019

本文实例为大家分享了python实现抠图给证件照换背景的具体代码,供大家参考,具体内容如下

import cv2
import numpy as np
import matplotlib.pyplot as plt

#建立显示图片的函数
def show(image):
 plt.imshow(image)
 plt.axis('off')
 plt.show()
 
#导入前景图
img=cv2.imread('font.jpg') #图片导入
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #转换颜色模型
print(img.shape) #打印图片规格
show(img) #显示图片

#导入背景图
back_img = cv2.imread('back.jpg') #图片导入
back_img = cv2.cvtColor(back_img,cv2.COLOR_BGR2RGB) #转换颜色模型
print(back_img.shape) #打印图片规格
show(back_img) #显示图片

#裁剪图片
#img = img[0:1000,150:550] #裁剪图片大小
#show(img) #显示图片

#缩放图片
#print(img.shape) #打印图片规格
#img=cv2.resize(img,None,fx=0.9,fy=0.9) #图片缩小10%
#print(img.shape) #打印图片规格

#拆分图片信息
rows,cols,channels = img.shape #拆分图片信息

#转换格式
img_hsv = cv2.cvtColor(img,cv2.COLOR_RGB2HSV) #把图片转换成HSV格式,用于抠图
show(img_hsv) #显示图片

#抠图
lower_blue=np.array([0,0,0]) #获取最小阈值
upper_blue=np.array([0,255,255]) #获取最大阈值
mask = cv2.inRange(img_hsv, lower_blue, upper_blue) #创建遮罩
show(mask) #显示遮罩

erode=cv2.erode(mask,None,iterations=3) #图像腐蚀
show(erode) #显示图片
dilate=cv2.dilate(erode,None,iterations=1) #图像膨胀
show(dilate) #显示图片

opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (8,8))) #开运算
show(opening) #显示图片

center = [400,800] #设置前景图开始位置
for i in range(rows):
 for j in range(cols):
  if opening[i,j]==0: #代表黑色
   back_img[center[0]+i,center[1]+j] =img[i,j] #赋值颜色
show(back_img) #显示图片

back_img = cv2.cvtColor(back_img,cv2.COLOR_RGB2BGR) #图像格式转换
back_img=cv2.resize(back_img,None,fx=0.8,fy=0.8) #图像缩放20%
cv2.imwrite('result.png',back_img) #保存图像

完整源码:python实现抠图给证件照换背景源码

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

Python 相关文章推荐
Python程序设计入门(4)模块和包
Jun 16 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
python实现基于SVM手写数字识别功能
May 27 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
PyQt5响应回车事件的方法
Jun 25 Python
python覆盖写入,追加写入的实例
Jun 26 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
如何定义TensorFlow输入节点
Jan 23 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 #Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 #Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 #Python
python实现证件照换底功能
Aug 20 #Python
pytorch多进程加速及代码优化方法
Aug 19 #Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 #Python
python opencv实现证件照换底功能
Aug 19 #Python
You might like
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
心扬JS分页函数代码
2010/09/10 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
原生js开发的日历插件
2017/02/04 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
tensorflow多维张量计算实例
2020/02/11 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
Java基础面试题
2012/11/02 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
18岁生日感言
2014/01/12 职场文书
2014年元旦感言
2014/03/06 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
中学图书馆工作总结
2015/08/11 职场文书
市场营销计划书
2019/04/24 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
导游词之无锡东林书院
2019/12/11 职场文书