Datawhale_计算机视觉基础_图像处理(4)——彩色空间互转及opencv实现

一、图像原理

1.1 三原色

RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。

RGB颜色空间 基于颜色的加法混色原理,从黑色不断叠加Red,Green,Blue的颜色,最终可以得到白色。
将R、G、B三个通道作为笛卡尔坐标系中的X、Y、Z轴,就得到了一种对于颜色的空间描述:
Datawhale_计算机视觉基础_图像处理(4)——彩色空间互转及opencv实现_第1张图片

对于彩色图转灰度图,有一个很著名的心理学公式:
G r a y = R ∗ 0.299 + G ∗ 0.587 + B ∗ 0.114 Gray = R * 0.299 + G * 0.587 + B * 0.114 Gray=R0.299+G0.587+B0.114

1.2 RGB与HSV互转

HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)
色相: 色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。
饱和度(S):是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
明度(V):取0-max(计算机中HSV取值范围和存储的长度有关)。
HSV颜色空间可以用一个圆锥空间模型来描述。圆锥的顶点处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处V=max,S=0,H无定义,代表白色。

RGB颜色空间中,三种颜色分量的取值与所生成的颜色之间的联系并不直观。而HSV颜色空间,更类似于人类感觉颜色的方式,封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?
Datawhale_计算机视觉基础_图像处理(4)——彩色空间互转及opencv实现_第2张图片
1- RGB2HSV
Datawhale_计算机视觉基础_图像处理(4)——彩色空间互转及opencv实现_第3张图片

2- HSV2RGB
Datawhale_计算机视觉基础_图像处理(4)——彩色空间互转及opencv实现_第4张图片

二、opencv实现

"""
cv2.cvtColor(

src,  输入图像s
code, 颜色空间转换标识符 如 cv2.COLOR_BGR2hHSV
 具体可以参考: cv2.ColorConversionCode 部分 
dstCn=0  目标图像的通道数,该参数为0时
,目标图像根据源图像的通道数和具体操作自动决定
)
"""

# RGB2HSV
# [i for i in dir(cv2) if 'COLOR_' in i and '2HS' in i]
to_hsv_lst = ['COLOR_BGR2HSV', 'COLOR_BGR2HSV_FULL', 'COLOR_RGB2HSV', 'COLOR_RGB2HSV_FULL']
for i in to_hsv_lst:
    pic_ghsv = cv2.cvtColor(img, eval(f'cv2.{i}'))
    cv2.imshow(f"{i}", pic_ghsv)

# RGB2GRAY
pic_gray = cv2.cvtColor(img , cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Scale", pic_gray)
cv2.imshow("original", img)
cv2.waitKey(0)

Datawhale_计算机视觉基础_图像处理(4)——彩色空间互转及opencv实现_第5张图片

你可能感兴趣的:(cv)