基于Python的OpenCV基础入门——色彩空间转换
- 色彩空间简介
- HSV色彩空间
- GRAY色彩空间
- 色彩空间转换
- 色彩空间转换代码实现:
色彩空间简介
色彩空间是人们为了表示不同频率的光线的色彩而建立的多种色彩模型。常见的色彩空间有RGB、HSV、HIS、YCrCb、YUV、GRAY,其中最常用的是RGB、HSV、GRAY。彩色图像RGB在机器中的颜色显示,是基于三基色而言的,三基色指的是红色、绿色和蓝色。
HSV色彩空间
HSV色彩空间是一种常用的色彩表示方式,它是根据颜色的直觉特性来定义的。HSV分别代表色调(Hue)、饱和度(Saturation)和明度(Value),也称为色相、饱和度和亮度。HSV色彩空间与RGB色彩空间有相互转换的关系。
色调(Hue)表示颜色的种类,可以想象为一个颜色环,具体的颜色通过角度来表示。色调的取值范围为0°到360°,其中0°和360°对应红色,120°对应绿色,240°对应蓝色。
饱和度(Saturation)表示颜色的纯度或强度,越大表示颜色越鲜艳,越小表示颜色越灰暗。饱和度的取值范围为0%~100%,其中0%表示灰色,100%表示最鲜艳的颜色。
明度(Value)表示颜色的亮度,越大表示颜色越亮,越小表示颜色越暗。明度的取值范围为0%~100%,其中0%表示黑色,100%表示白色。
HSV色彩空间的优点是更符合人类对颜色的感知,易于理解和调整,常用于图像处理、图形设计等领域。
GRAY色彩空间
GRAY色彩空间是一种常见的色彩空间,用于表示灰度图像。在GRAY色彩空间中,每个像素的颜色只由一个灰度值来表示,灰度值范围一般是0-255,其中0表示黑色,255表示白色。
色彩空间转换
image = cv2.cvtColor(src, code)
参数:
src:转换前的原始图像。
code:色彩空间转换码
常用的转换码: cv.COLOR_BGR2RGB # BGR 转换为RGB图像
cv.COLOR_BGR2GRAY # BGR 转换为灰度图像
cv.COLOR_BGR2HSV # BGR 转换为 HSV 图像
色彩空间转换代码实现:
利用OpenCV进行读取,使用matplotlib进行显示
import cv2 #导入OpenCV模块
import matplotlib.pyplot as plt # 导入matplotlib库
image = cv2.imread("./img/cat.jpg") # 导入图片
plt.imshow(image) # 使用matplotlib显示
plt.show() # 显示图像
代码效果图如下:
如果使用OpenCV读取一张图片,经过一系列操作后,用Pillow或者matplotlib进行显示图像,此时显示的图片为蓝色,这是由于Opnecv颜色通道顺序为BGR所导致,所以我们需要进行色彩空间转换:
import cv2 #导入OpenCV模块
import matplotlib.pyplot as plt # 导入matplotlib库
image = cv2.imread("./img/cat.jpg") # 导入图片
img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 色彩空间BGR转RGB
plt.imshow(img) # 使用matplotlib显示
plt.show() # 显示图像