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实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
python图书管理系统
Apr 05 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
基于django传递数据到后端的例子
Aug 16 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
python3访问字典里的值实例方法
Nov 18 Python
python开发制作好看的时钟效果
May 02 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中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
简单介绍Ruby中的CGI编程
2015/04/10 Python
pip命令无法使用的解决方法
2018/06/12 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
Android interview questions
2016/12/25 面试题
优秀管理者事迹材料
2014/05/22 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2015年组织部工作总结
2015/04/03 职场文书
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers