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将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
python 求10个数的平均数实例
Dec 16 Python
pytorch SENet实现案例
Jun 24 Python
浅析Python迭代器的高级用法
Jul 16 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 Python
如何理解python接口自动化之logging日志模块
Jun 15 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静态类
2006/11/25 PHP
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
python学生管理系统代码实现
2020/04/05 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
C面试题
2015/10/08 面试题
挂牌仪式策划方案
2014/05/18 职场文书
物理学专业求职信
2014/07/04 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
赔偿协议书
2015/01/27 职场文书
职位证明模板
2015/06/23 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
javascript数组includes、reduce的基本使用
2021/07/02 Javascript