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实现strcmp函数功能示例
Mar 25 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
python+pandas分析nginx日志的实例
Apr 28 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
对pandas处理json数据的方法详解
Feb 08 Python
django的ORM模型的实现原理
Mar 04 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
python制作英语翻译小工具代码实例
Sep 09 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
pandas 中对特征进行硬编码和onehot编码的实现
Dec 20 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
Python脚本打包成可执行文件过程解析
Oct 20 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
php编译安装php-amq扩展简明教程
2016/06/25 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
python笔记:mysql、redis操作方法
2017/06/28 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
实例介绍Python中整型
2019/02/11 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python3常见函数range()用法详解
2019/12/30 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
《母亲的恩情》教学反思
2014/02/13 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
践行三严三实心得体会
2014/10/13 职场文书