9.OpenCV的色彩空间变换
文章目录
- 前言
- 一、色彩空间变换
- 1、RGB色彩空间
- 2、GRAY色彩空间
- 3、YCrCb色彩空间
- 4、HSV色彩空间
- 二、OpenCV-Python资源下载
- 总结
前言
色彩空间也称颜色模型、颜色空间、色彩模型等,它是图像在计算机内部的一种存储方式。常见的色彩空间包括RGB、GRAY、XYZ、YCrCb、HSV等。每种色彩空间都有其擅长的问题解决领域。所以在解决具体色彩问题时就需要进行特定的色彩类型空间转换。
一、色彩空间变换
OpenCV的cv2.Color()函数用于转换色彩空间类型。
转换代码 | 说明 |
cv2.COLOR_BGR2RGB | 将BGR色彩空间转换为RGB色彩空间 |
cv2.COLOR_BGR2GRAY | 将BGR色彩空间转换为GRAY色彩空间 |
cv2.COLOR_BGR2YCrCb | 将BGR色彩空间转换为YCrCb色彩空间 |
cv2.COLOR_BGR2HSV | 将BGR色彩空间转换为HSV色彩空间 |
1、RGB色彩空间
RGB色彩空间使用R(Red,红)、G(Green,绿)、B(Blue,蓝)3种基本颜色表示图像像素。RGB色彩空间中,图像的每一个像素用一个三元组表示,三元组中的3个值依次表示红色、绿色和蓝色,依次对应R、G、B通道。
需要注意的是,OpenCV中默认使用BGR色彩空间,它按照B、G、R通道顺序表示图像。
# BGR to RGB
img = cv2.imread('bee.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.imshow('BGR', img)
cv2.imshow('RGB', img_rgb)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_rgb.png', img_rgb)
cv2.destroyAllWindows()
2、GRAY色彩空间
GRAY色彩空间通常指8位灰度图像,其颜色取值范围为[0,255],共256个灰度级。从BGR色彩空间转换为GRAY色彩空间的计算公式为:Gray = 0.299R + 0.587G + 0.114B,其中,R、G、B为RGB色彩空间中R、G、B通道的图像。
# BGR to GRAY
img = cv2.imread('bee.jpg')
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('BGR', img)
cv2.imshow('GRAY', img_gray)
k = cv2.waitKey()
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_gray.png', img_gray)
cv2.destroyAllWindows()
3、YCrCb色彩空间
YCrCb色彩空间用亮度Y,红色Cr、蓝色Cb表示图像。从BGR色彩空间转换为YCrCb色彩空间的计算公式为:
Y = 0.299R + 0.587G + 0.114B
Cr = 0.713(R - Y) + delta
Cb = 0.564(B - Y) + delta
其中,delta = 128(8位图像)、delta = 32767(16位图像)、delta = 0.5(单精度图像)
# BGR to YCrCb
img = cv2.imread('bee.jpg')
img_YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
cv2.imshow('BGR', img)
cv2.imshow('GRAY', img_YCrCb)
k = cv2.waitKey()
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_YCrCb.png', img_YCrCb)
cv2.destroyAllWindows()
4、HSV色彩空间
HSV色彩空间使用色调(Hue,也称色相)、饱和度(Saturation)、亮(Value)度表示图像。
色调H表示颜色,用角度表示,取值范围为[0°,360°],从红光开始逆时针方向计算。
饱和度S表示颜色接近光谱色的程度,或表示光谱色中混入白光的比例。光谱色中白光的比例越低,饱和度越高,颜色越深、艳。光谱色中白光比例为0时,饱和度达到最高。饱和度的取值范围为[0,1]。
亮度V表示颜色的明亮的程度,是人眼可感受到的明暗程度,其取值范围为[0,1]。
# BGR to HSV
img = cv2.imread('bee.jpg')
img_HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
cv2.imshow('BGR', img)
cv2.imshow('HSV', img_HSV)
k = cv2.waitKey()
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('img_HSV.png', img_HSV)
cv2.destroyAllWindows()
二、OpenCV-Python资源下载