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 中文字符串的处理实现代码
Oct 25 Python
python输出当前目录下index.html文件路径的方法
Apr 28 Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 Python
python复制文件的方法实例详解
May 22 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
Python数据类型之Set集合实例详解
May 07 Python
python实现函数极小值
Jul 10 Python
python 实现单例模式的5种方法
Sep 23 Python
python模拟点击在ios中实现的实例讲解
Nov 26 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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
详解php的socket通信
2015/08/11 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
JavaScript事件列表解说
2006/12/22 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Linux如何压缩可执行文件
2014/03/27 面试题
法律专业推荐信范文
2013/11/29 职场文书
经典大学生求职信范文
2014/01/06 职场文书
高中课程设置方案
2014/05/28 职场文书
中国梦口号
2014/06/13 职场文书
2014年药房工作总结
2014/11/22 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
Python实现socket库网络通信套接字
2021/06/04 Python
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫