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中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
Python中if有多个条件处理方法
Feb 26 Python
python实现银行实战系统
Feb 26 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
Python数据库封装实现代码示例解析
Sep 05 Python
Python 中Operator模块的使用
Jan 30 Python
Python实现打乒乓小游戏
Sep 25 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 Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python实现简单字典树的方法
2016/04/29 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python迭代dict的key和value的方法
2018/07/06 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
django API 中接口的互相调用实例
2020/04/01 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
学习党章思想汇报
2014/01/07 职场文书
运动会通讯稿150字
2014/02/15 职场文书
市级文明单位申报材料
2014/05/07 职场文书
文明城市标语
2014/06/16 职场文书
先进学校事迹材料
2014/12/30 职场文书
刑事辩护词范文
2015/05/21 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
Python基础之条件语句详解
2021/06/16 Python
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android