python-opencv之色彩空间,RGB2HSV色彩空间转换及应用

一、Python-opencv中的色彩空间

在这里主要介绍RGB和HSV色彩空间,这二者具体是什么这里不再详细介绍,其他回答都很详细。
这里要介绍一下二者的取值和关系:
在Python-opencv中,RGB图像三个通道的取值都是0~255,*而HSV中H取值为0-180,S和V取值都是0-255,这是因为计算机用8位显示图像,取值范围为0-255,而HSV色彩空间H取值范围为0-360,S和V取值都是0-1,为了能够在计算机上显示必须映射到0-255,这里H就直接除以2得到的取值范围就是0-180了。具体的RGB到HSV的变换公式这里也不再详细介绍。
这里再附加一个HSV在原始HSV空间各个颜色的取值 和在Opencv中HSV各个颜色的取值
在这里插入图片描述映射前
在这里插入图片描述映射后

二、为什么同样的图片用公式换了色彩空间显示出来的完全不一样?

你是否有过这个问题?按理说我只是变换了色彩空间,图片还是那个图片,在不同的色彩空间展示的同一张图片应该看到的是一样的才对啊。原因是由于我们虽然得到了HSV的图片,也有H,S,V三个通道,但是我们的电脑显示的时候还是按照RGB的三个通道来显示的,所以我们看到的图片就不是原来的图片了。

三、cv2.inRange()函数

这个函数常常用来在HSV空间中挑选出想要的色彩部分,有三个参数.inRange(img,min,max)
具体怎么用这里就不在详细介绍了,本文只介绍这个函数的常用流程,通常分为四步:

min = np.array([Hl,Sl,Vl]) #设置范围下限
max = np.array([Hh,Sh,Vh])#设置范围上限
mask = cv.inRange(img,min,max)#制作mask
res = cv.bitwise_and(img,img,mask)#用带掩膜的与操作进行计算得到我们想要的结果

四、 BGRA图像

.png文件有alpha参数 用来透明化,但是只能保存了后打开才能看出差异,举例:

lena = cv.imread('lena.jpg',-1)
b,g,r,a, = cv.split(cv.cvtColor(lena,cv.COLOR_BGR2BGRA))#先转为RGBA然后分解,好修改alpha的值
a[:,:] = 255
lena255 = cv.merge([b,g,r,a])
a[:,:] = 125
lena125 = cv.merge([b,g,r,a])
cv.imwrite('lena255.png',lena255)
cv.imwrite('lena125.png',lena125)

对比:a=255
在这里插入图片描述a=125

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值