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输出一个杨辉三角的例子
Jun 13 Python
python利用datetime模块计算时间差
Aug 04 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
python 绘制拟合曲线并加指定点标识的实现
Jul 10 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
django 解决扩展自带User表遇到的问题
May 14 Python
基于Python绘制个人足迹地图
Jun 01 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 Python
Python爬虫实战之爬取携程评论
Jun 02 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
咖啡的化学
2021/03/03 咖啡文化
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
php批量上传的实现代码
2013/06/09 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
Python函数参数类型*、**的区别
2015/04/11 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
TensorFlow的权值更新方法
2018/06/14 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
详解python里的命名规范
2018/07/16 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
python并发和异步编程实例
2018/11/15 Python
python调用摄像头拍摄数据集
2019/06/01 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
工程师求职简历的自我评价分享
2013/10/10 职场文书
小学生班会演讲稿
2014/01/09 职场文书
青春奉献演讲稿
2014/05/08 职场文书
保护环境倡议书100字
2014/05/19 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
作风建设剖析材料
2014/10/06 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
新入职员工工作总结
2015/10/15 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android