0


第四章 Opencv图像色彩空间与通道

文章目录

1.色彩空间

人眼看到不同频率的光会感受到不同的颜色,人们为了表示这些不同频率光线的色彩,就建立了各种色彩模型,这些色彩模型就称作色彩空间。

1-1.RGB/BGR色彩空间

RGB/BGR色彩空间是基于三基色的;我们一般把一张彩色图像的色彩空间默认为是RGB色彩空间,但因为Opencv拆分一张彩色图像的通道默认顺序是 B→ G→ R,所以Opencv把一张彩色图像的色彩空间默认为BGR色彩空间。

1-2.GRAY色彩空间

GRAY色彩空间通常指的是灰度图像,灰度图像的像素被划分为256个灰度级别,每个像素为其中的一个级别。(前面也讲到过)

  • BGR色彩空间转换到GRAY色彩空间:dst = cvtColor(src, code);cv:指opencv,t:transform转变的意思,Color:色彩空间的意思。
  • 参数说明:- dst:转换后的图像。- src:转换前的图像(原图像)。- code:色彩空间转换码。
  • 实例:在这里插入图片描述> 1.Opencv也提供了> > cv2.COLOR_GRAY2BGR> > (从GRAY色彩空间转换到BGR色彩空间),虽然能转(转成的是三通道),但灰度图像是无法转换成彩色图像的,因为丢失了色彩的比例。> > 2.当BGR三个通道的值相等时,图像就是灰度图像,但同样,灰度图像是无法转换为彩色图像的。所以,有时候别人单通道灰度图像使用不方便时,就利用BGR色彩空间中的三通道的灰度图像。

1-3.HSV色彩空间

HSV色彩空间是基于色调(hue)、饱和度(saturation)和亮度(value)的;

色调是指光的颜色,在[0, 180]内取值,例如红橙黄绿青蓝紫等;红绿蓝色调分别为0、60、120。

饱和度是指色彩的深浅,在[0, 255]内取值;0时,图像变为灰度图像。

亮度是指光的明暗,在[0, 255]内取值;0时,图像变为纯黑色。

  • HSV色彩空间转换到BGR色彩空间:dst = cvtColor(src, code)
  • 参数说明:- dst:转换后的图像。- src:转换前的图像(原图像)。- code:色彩空间转换码。
  • 实例:在这里插入图片描述

2.通道

2-1.拆分通道:

split()

方法

1.拆BGR色彩空间图像的通道

  • 语法格式:b, g, r = cv2.split(bgr_img)
  • 参数说明:- b:B通道图像(像素)。- g:G通道图像(像素)。- r:R通道图像(像素)。- bgr_img:一张BGR色彩空间图像。
  • 实例:在这里插入图片描述> 会发现B、G、R三个通道显示的怎么是灰度图像呢?我看到有书上说是因为当程序执行到> > cv2.imshow("B", b)> > 时,原图像B、G、R这3个通道的值都会被修改位B通道的值,即(b, b, b)。但作者个人觉得有问题,b.shape=(W, H)是个单通道图像,opencv对单通道图像默认按照灰度图像处理;当输入三通道图像即shape为(W, H, 3)时,opencv默认按照BGR图像处理。

2.拆HSV色彩空间图像的通道

    • 语法格式:h, s, v = cv2.split(hsv_img)- 参数说明:- h:h通道图像(像素)。- s:s通道图像(像素)。- v:v通道图像(像素)。- hsv_img:一张hsv色彩空间图像。- 实例:在这里插入图片描述> 要先将图像转换为HSV色彩空间!

2-2.合并通道:

merge()

方法

合并通道其实就是拆分通道的逆过程。

1.B、G、R 通道的合并

  • 语法格式:bgr_img = cv2.split([b, g, r])
  • 参数说明:- b:B通道图像(像素)。- g:G通道图像(像素)。- r:R通道图像(像素)。- bgr_img:合并后的一张BGR色彩空间图像。
  • 实例:在这里插入图片描述> merge()合并时,也可以更换b、g、r顺序。如上图img3窗口。

2.H、S、V 通道的合并

  • 语法格式:hsv_img = cv2.split([h, s, v)
  • 参数说明:- h:h通道图像(像素)。- s:s通道图像(像素)。- v:v通道图像(像素)。- hsv_img:合并后的一张hsv色彩空间图像。
  • 实例:在这里插入图片描述> 要对比原图的话,要将HSV色彩空间转换为BGR色彩空间。

3.B、G、R、A 通道的合并

opencv在BGR色彩空间的基础上,又增加了一个用来设置图像透明度的A通道,即alpha通道;这就构成了BGRA色彩空间。alpha在[0, 255]内取值,0为透明,255为不透明。

  • 语法格式:bgra_img = cv2.split([b, g, r,a])
  • 参数说明:- b:B通道图像(像素)。- g:G通道图像(像素)。- r:R通道图像(像素)。- a:A通道图像(像素)。- bgra_img:合并后的一张BGRA色彩空间图像。
  • 实例:在这里插入图片描述在这里插入图片描述在这里插入图片描述> 1.由上面两图可知,只有png文件可以保存alpha通道的信息!> > 2.使用BGRA色彩空间时,imshow()方法可能看不到效果,可以先保存下来再看。

本文转载自: https://blog.csdn.net/qq_38230414/article/details/128989069
版权归原作者 ZGPing@ 所有, 如有侵权,请联系我们删除。

“第四章 Opencv图像色彩空间与通道”的评论:

还没有评论