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 相关文章推荐
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
virtualenv实现多个版本Python共存
Aug 21 Python
python中调试或排错的五种方法示例
Sep 12 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
在 Pycharm 安装使用black的方法详解
Apr 02 Python
django自带的权限管理Permission用法说明
May 13 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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 版获取重定向后的地址(代码)
2013/06/26 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
Python中的getopt函数使用详解
2015/07/28 Python
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
pytorch 模型可视化的例子
2019/08/17 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
增大python字体的方法步骤
2020/07/05 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
抽象方法、抽象类怎样声明
2014/10/25 面试题
大学生演讲稿范文
2014/01/11 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
电子商务专业自荐信
2014/06/02 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
女性健康讲座主持词
2015/07/04 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书