前言

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、掩膜的简单理解(二)相关推荐

  1. 2021-01-07 Python Opencv转换颜色空间 RGB转为HSV

    Python Opencv转换颜色空间 RGB转为HSV 举个例子,通过摄像头把视频中的蓝色区域凸显出来,剩余的颜色均为黑色 import numpy as npcap = cv2.VideoCapt ...

  2. python OpenCV— 颜色空间(RGB,HSV,Lab)与 颜色直方图

    看到这篇博文,受益匪浅,留存在此,没别的意思,各位还是回原博收藏点赞的好,免得引起不必要的争议. 安装: 方法1:conda install -c menpo opencv 方法2:conda ins ...

  3. 【计算机视觉】opencv入门学习笔记Part.1

    [计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...

  4. 【python教程入门学习】第一个Pygame程序

    Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它. Pygame 语法简单.明了,秉持了 Python 语言一贯的风格.同时,它作为一个 ...

  5. python数据分析入门学习笔记

    python数据分析入门学习笔记儿 学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我 ...

  6. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  7. python基础入门学习笔记 (2)

    python基础入门学习笔记 2021年2月8日 1 编译器和解释器的区别 编译器/解释器:高级语言与机器之间的翻译官 2 值传递: print "a = ",a print &q ...

  8. 【python教程入门学习】普通人学python有意义吗

    普通人学python有意义吗?普通人能不能学习python语言,难不难,是否容易上手,学了python能做那些事情,能挣多少钱?这些问题是很多同学关心的问题,今天python教程入门学习就从小白同学的 ...

  9. 【python教程入门学习】学python要多久,0基础学python有多难

    学python要多久,0基础学python有多难,这是很多想学习python语言同学绕不开的问题,都害怕花完钱最终没有应有的回报!对于毫无经验0基础的同学来说学习python什么最重要,方向选对坚持下 ...

最新文章

  1. python人脸识别毕业设计-基于Python的人脸识别系统研究.docx
  2. pandas的reindex功能
  3. 如何让两个安装程序setup共享同一个component—— installing shared files(version:installshield develop8.0)...
  4. LeetCode MySQL 550. 游戏玩法分析 IV
  5. SunPinyin: Linux下最好用的拼音输入法,MacOSX下也是不错的,还免费,可以不用买IMKQIM了...
  6. Java 蓝桥杯 数列特征
  7. php 连接oracle乱码,PHP查询oracle数据显示乱码问题
  8. 第一节:Scrapy开源框架初探
  9. mysql5.7多源复制缺点_配置mysql5.7多源复制
  10. javascript 操作服务器 文件,使用javascript读取服务器文件
  11. 【校招VIP】前端js语言考点之事件冒泡与捕捉
  12. python多线程求合数个数_求十亿内所有质数的和,怎么做最快?
  13. codeforces 1538G Gift Set
  14. 操作系统之文件管理思维导图
  15. python大作业代码_爬虫大作业(示例代码)
  16. Visual Studio2019新手C++教程(一)
  17. python 因子分析 权重计算方法_因子得分如何计算_spss如何计算因子得分
  18. 潘多拉固件设置ipv6_玩转PLEX 篇四:家用宽带连接IPV6的方法
  19. ai面谈技巧_AI时代的人际化技巧
  20. 计算机u盘 硬盘无法读取,电脑无法识别usb设备,电脑无法识别u盘,移动硬盘解决方法汇总...

热门文章

  1. Java导出Excel(Poi详解)
  2. GitHub上最火的两份Java面试小册,Star已经超百万
  3. 如何打动用户?携程用户体验实践分享
  4. 初探密码破译:Metropolis-Hastings算法破解密文
  5. Python教程:去除背景,我保证不动她一根头发(附多种方式)
  6. 分布式数据库服务器时钟同步(NTP网络时钟同步)北斗卫星同步时钟起到关键性作用
  7. 5个人站队,每个人不在原位置有多少种站法
  8. Android中 .stub类的使用
  9. 链接服务器,不同服务器数据库之间的数据操作。
  10. 2020/7/17 积分不等式/反常积分/定积分应用