Opencv实现抠图背景图替换功能


Posted in Python onMay 21, 2019

本文实例为大家分享了Opencv实现抠图替换背景图的具体代码,供大家参考,具体内容如下

下面简单图片演示一下:

提取mask:

Opencv实现抠图背景图替换功能===>Opencv实现抠图背景图替换功能

替换背景:

Opencv实现抠图背景图替换功能 + Opencv实现抠图背景图替换功能=Opencv实现抠图背景图替换功能

python的opencv代码如下:

# coding=utf-8
 
import cv2
import numpy as np
 
img=cv2.imread('lp.jpg')
img_back=cv2.imread('back.jpg')
#日常缩放
rows,cols,channels = img_back.shape
img_back=cv2.resize(img_back,None,fx=0.7,fy=0.7)
cv2.imshow('img_back',img_back)
 
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.4,fy=0.4)
cv2.imshow('img',img)
rows,cols,channels = img.shape#rows,cols最后一定要是前景图片的,后面遍历图片需要用到
 
#转换hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#获取mask
lower_blue=np.array([78,43,46])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)
 
#腐蚀膨胀
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)
 
#遍历替换
center=[50,50]#在新背景图片中的位置
for i in range(rows):
 for j in range(cols):
 if dilate[i,j]==0:#0代表黑色的点
  img_back[center[0]+i,center[1]+j]=img[i,j]#此处替换颜色,为BGR通道
cv2.imshow('res',img_back)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现一个简单的MySQL类
Jan 07 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
python开发利器之ulipad的使用实践
Mar 16 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python中使用支持向量机SVM实践
Dec 27 Python
Django数据库表反向生成实例解析
Feb 06 Python
python交换两个变量的值方法
Jan 12 Python
Python3+Flask安装使用教程详解
Feb 16 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 Python
python多进程读图提取特征存npy
May 21 #Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
May 21 #Python
python+selenium实现简历自动刷新的示例代码
May 20 #Python
图文详解python安装Scrapy框架步骤
May 20 #Python
Python配置虚拟环境图文步骤
May 20 #Python
Python检测数据类型的方法总结
May 20 #Python
Python中的引用知识点总结
May 20 #Python
You might like
php实现过滤UBB代码的类
2015/03/12 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
四个PHP非常实用的功能
2015/09/29 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
jquery.validate使用攻略 第二部
2010/07/01 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
Python语言描述最大连续子序列和
2017/12/05 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL