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 BeautifulSoup设置页面编码的方法
Apr 03 Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
Python版微信红包分配算法
May 04 Python
Python实时获取cmd的输出
Dec 13 Python
python读取中文txt文本的方法
Apr 12 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
pyhton中__pycache__文件夹的产生与作用详解
Nov 24 Python
变长双向rnn的正确使用姿势教学
May 31 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
PHP中mysql_field_type()函数用法
2014/11/24 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
JQuery 常用方法基础教程
2009/02/06 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
Python通过命令开启http.server服务器的方法
2017/11/04 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
如何高效率的查找一个月以内的数据
2012/04/15 面试题
小学公民道德宣传日活动总结
2015/03/23 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
第一节英语课开场白
2015/06/01 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技