python openCv 入门学习-RGB转HSV、掩膜的简单理解(二)
前言
RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色 混合而成。然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV(色 调 Hue, 饱和度 Saturation,亮度 Value)是根据颜色的直观特性创建的一种颜色空间, 也称六角 锥体模型
为什么会选择 HSV 空间而不是 RGB 空间? 对于图像而言,识别相应的颜色在 RGB 空间、 HSV 空间或者其它颜色空间都是可行的。之所以选择 HSV,是因为 H 代表的色调基本上可以 确定某种颜色,再结合饱和度和亮度信息判断大于某一个阈值。而 RGB 由三个分量构成,需要判断每种分量的贡献比例。即 HSV 空间的识别的范围更广,更方便。
须知
BGR->Gray 和 BGR->HSV。注意 Gray 和 HSV 不可以互相转换。 颜色空间转 换:cv2.cvtColor(input_image, flag) BGR->Gray: flag 就是 cv2.COLOR_BGR2GRAY BGR->HSV: flag 就是 cv2.COLOR_BGR2HSV OpenCV 中 HSV 颜色空间的取值范围: H [0, 179] S [0, 255] V [0, 255]
掩膜
掩膜的概念描述不太 好理解,它可以被理解为位图,可以进行腐蚀膨胀等形态学的操作。我们只需要知道,在提取感兴趣区域、屏蔽图片某些区域、结构特征提取和特殊图像制作中都可能用到掩膜
import cv2
import numpy as np#创建图片和颜色块
img=np.ones((240,320,3),dtype=np.uint8)*255
img[100:140,140:180]=[0,0,255]
img[60:100,60:100]=[0,255,255]
img[60:100,220:260]=[255,0,0]
img[140:180,60:100]=[255,0,0]
img[140:180,220:260]=[0,255,255]
(上面的img数组)
#黄红两色的hsv阙值
yellow_lower=np.array([26,43,46])
yellow_upper=np.array([34,255,255])
red_lower=np.array([0,43,46])
red_upper=np.array([10,255,255])
#颜色空间转换 rgb->hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#构建掩膜,并用掩膜进行
#inRange 二参 低于这个值变0 三参高于这个值变0
#取到黄色遮罩
mask_yellow=cv2.inRange(hsv,yellow_lower,yellow_upper)
#取到红色遮罩
mask_red=cv2.inRange(hsv,red_lower,red_upper)
#给这俩遮罩拼一起了
mask=cv2.bitwise_or(mask_yellow,mask_red)
(红色和黄色的遮罩通过bitwise_or结合)
#对二进制数据进行“与”操作 mask参数指定使用的模板(遮罩)
res=cv2.bitwise_and(img,img,mask=mask)
cv2.imshow('image',img)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果就这样,,,没理解??
img+mask+img=结果,就是两张图通过遮罩"与"在一起,遮罩把原图挡住了,只显示了提取颜色那部分…
python openCv 入门学习-RGB转HSV、掩膜的简单理解(二)相关推荐
- 2021-01-07 Python Opencv转换颜色空间 RGB转为HSV
Python Opencv转换颜色空间 RGB转为HSV 举个例子,通过摄像头把视频中的蓝色区域凸显出来,剩余的颜色均为黑色 import numpy as npcap = cv2.VideoCapt ...
- python OpenCV— 颜色空间(RGB,HSV,Lab)与 颜色直方图
看到这篇博文,受益匪浅,留存在此,没别的意思,各位还是回原博收藏点赞的好,免得引起不必要的争议. 安装: 方法1:conda install -c menpo opencv 方法2:conda ins ...
- 【计算机视觉】opencv入门学习笔记Part.1
[计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...
- 【python教程入门学习】第一个Pygame程序
Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它. Pygame 语法简单.明了,秉持了 Python 语言一贯的风格.同时,它作为一个 ...
- python数据分析入门学习笔记
python数据分析入门学习笔记儿 学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我 ...
- 【python教程入门学习】Python实现自动玩贪吃蛇程序
这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...
- python基础入门学习笔记 (2)
python基础入门学习笔记 2021年2月8日 1 编译器和解释器的区别 编译器/解释器:高级语言与机器之间的翻译官 2 值传递: print "a = ",a print &q ...
- 【python教程入门学习】普通人学python有意义吗
普通人学python有意义吗?普通人能不能学习python语言,难不难,是否容易上手,学了python能做那些事情,能挣多少钱?这些问题是很多同学关心的问题,今天python教程入门学习就从小白同学的 ...
- 【python教程入门学习】学python要多久,0基础学python有多难
学python要多久,0基础学python有多难,这是很多想学习python语言同学绕不开的问题,都害怕花完钱最终没有应有的回报!对于毫无经验0基础的同学来说学习python什么最重要,方向选对坚持下 ...
最新文章
- python人脸识别毕业设计-基于Python的人脸识别系统研究.docx
- pandas的reindex功能
- 如何让两个安装程序setup共享同一个component—— installing shared files(version:installshield develop8.0)...
- LeetCode MySQL 550. 游戏玩法分析 IV
- SunPinyin: Linux下最好用的拼音输入法,MacOSX下也是不错的,还免费,可以不用买IMKQIM了...
- Java 蓝桥杯 数列特征
- php 连接oracle乱码,PHP查询oracle数据显示乱码问题
- 第一节:Scrapy开源框架初探
- mysql5.7多源复制缺点_配置mysql5.7多源复制
- javascript 操作服务器 文件,使用javascript读取服务器文件
- 【校招VIP】前端js语言考点之事件冒泡与捕捉
- python多线程求合数个数_求十亿内所有质数的和,怎么做最快?
- codeforces 1538G Gift Set
- 操作系统之文件管理思维导图
- python大作业代码_爬虫大作业(示例代码)
- Visual Studio2019新手C++教程(一)
- python 因子分析 权重计算方法_因子得分如何计算_spss如何计算因子得分
- 潘多拉固件设置ipv6_玩转PLEX 篇四:家用宽带连接IPV6的方法
- ai面谈技巧_AI时代的人际化技巧
- 计算机u盘 硬盘无法读取,电脑无法识别usb设备,电脑无法识别u盘,移动硬盘解决方法汇总...