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 list 合并连接字符串的方法
Mar 09 Python
教你安装python Django(图文)
Nov 04 Python
python计算圆周率pi的方法
Jul 11 Python
详解Python with/as使用说明
Dec 13 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
Django 自定义分页器的实现代码
Nov 24 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
python3 配置logging日志类的操作
Apr 08 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
python 星号(*)的多种用途
Sep 21 Python
Python pandas之求和运算和非空值个数统计
Aug 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下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
python实现ipsec开权限实例
2014/11/11 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
Python 发送邮件方法总结
2020/08/10 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
计算机专业应届毕业生自荐信
2013/09/26 职场文书
工业设计专业个人求职信范文
2013/12/28 职场文书
大学生军训感想
2014/02/16 职场文书
本科毕业生自荐信
2014/06/02 职场文书
节电标语大全
2014/06/23 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android