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=结果,就是两张图通过遮罩"与"在一起,遮罩把原图挡住了,只显示了提取颜色那部分…

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值