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程序员鲜为人知但你应该知道的17个问题
Jun 04 Python
python的dict,set,list,tuple应用详解
Jul 24 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
在Python中操作文件之truncate()方法的使用教程
May 25 Python
python和bash统计CPU利用率的方法
Jul 10 Python
Python只用40行代码编写的计算器实例
May 10 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
python文件写入write()的操作
May 14 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
Python sys模块常用方法解析
Feb 20 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 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可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
详解Python中的strftime()方法的使用
2015/05/22 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
python读取和保存图片5种方法对比
2018/09/12 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
经典c++面试题四
2015/05/14 面试题
程序员机试试题汇总
2012/03/07 面试题
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
淘宝网店营销策划书
2014/01/11 职场文书
后勤工作个人总结
2015/02/28 职场文书
2015年店长个人工作总结
2015/10/23 职场文书