opencv转换颜色空间更改图片背景


Posted in Python onAugust 20, 2019

本文实例为大家分享了opencv转换颜色空间更改图片背景的具体代码,供大家参考,具体内容如下

思路:

1、将BGR转换为HSV颜色空间
2、设置掩模
3、位运算

这里以更改摩托罗拉logo背景为例,图片在必应图片搜索得知,具体代码如下:

import numpy as np
import cv2
from imageio import imread
import matplotlib.pyplot as plt

def show(img,winname = "img"):
 cv2.namedWindow(winname,cv2.WINDOW_GUI_NORMAL)
 cv2.imshow(winname,img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

imgpath = r'motorola.jpg'

img = imread(imgpath)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
if img.shape == 4:
 img = img[:,:,:3]

show(img)
print(img.shape)

bgd = np.ones(img.shape,dtype=np.uint8)
bgd[:,:,:] = 255 #转换为白色背景
show(bgd,"white")
# 转换颜色空间
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# show(hsv)
# 绿色分量掩模,使用inRange函数
# lowergreen = np.array([35,43,46],dtype = np.uint8)
# uppergreen = np.array([77,255,255],dtype=np.uint8)
# maskgreen = cv2.inRange(hsv,lowergreen,uppergreen)
# show(maskgreen)

# 蓝色分量掩模,使用inRange函数
lowerblue = np.array([100,43,46],dtype = np.uint8)
upperblue = np.array([124,255,255],dtype=np.uint8)
maskblue = cv2.inRange(hsv, lowerblue, upperblue)
maskblue_inv = cv2.bitwise_not(maskblue)
show(maskblue,'maskblue')
show(maskblue_inv,'maskblue_inv')
# 腐蚀操作
kernel_erode = np.ones((3,3),dtype = np.uint8)
erode = cv2.erode(maskblue,kernel_erode)

# 膨胀操作
kernel_dilate = np.ones((5,5),np.uint8)
dilate = cv2.dilate(erode, kernel = kernel_dilate)

show(erode,'erode')

# 前景色只留下蓝色字体部分
fg = cv2.bitwise_and(img,img,mask = maskblue)
show(fg,'fg')
# 背景中除去蓝色字体部分
bg = cv2.bitwise_and(bgd,bgd,mask = maskblue_inv)
show(bg,'bg')
# 前景色和背景色相加
dst = cv2.add(bg,fg)
show(dst,'dst')

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

Python 相关文章推荐
Python抓取Discuz!用户名脚本代码
Dec 30 Python
python绘制双柱形图代码实例
Dec 14 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
python list转矩阵的实例讲解
Aug 04 Python
Django之无名分组和有名分组的实现
Apr 16 Python
Python安装Flask环境及简单应用示例
May 03 Python
python Tkinter的图片刷新实例
Jun 14 Python
python原类、类的创建过程与方法详解
Jul 19 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
python实现扫雷小游戏
Apr 24 Python
深入解析NumPy中的Broadcasting广播机制
May 30 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 Python
pytorch 预训练层的使用方法
Aug 20 #Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 #Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 #Python
python实现抠图给证件照换背景源码
Aug 20 #Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 #Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 #Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 #Python
You might like
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
vue 权限认证token的实现方法
2018/07/17 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python3简单实现微信爬虫
2015/04/09 Python
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
python用match()函数爬数据方法详解
2019/07/23 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
JAVA中的关键字有什么特点
2014/03/07 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
书法大赛策划方案
2014/06/04 职场文书
初中同学会活动方案
2014/08/22 职场文书
2014年法务工作总结
2014/12/11 职场文书
欠条格式范本
2015/07/03 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
团结主题班会
2015/08/13 职场文书