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实现求两个csv文件交集的方法
Sep 06 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
python3实现点餐系统
Jan 24 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
感知器基础原理及python实现过程详解
Sep 30 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
Python获取对象属性的几种方式小结
Mar 12 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
详解Django中的FBV和CBV对比分析
Mar 01 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
vue 组件简介
2020/07/31 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python中暂存上传图片的方法
2015/02/18 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
专科毕业生自我鉴定
2013/12/01 职场文书
历史系自荐信范文
2013/12/24 职场文书
个人函授自我鉴定
2014/03/25 职场文书
招标授权委托书样本
2014/09/23 职场文书
小学英语课教学反思
2016/02/15 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
Python中的程序流程控制语句
2022/02/24 Python
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技