计算机视觉基础7---色彩空间变换
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 常见的色彩空间:RGB、GRAY、XYZ、YCrCb、HSV;# 转换色彩空间类型函数:cv2.cvtColor();# 语法格式:dst = cv2.cvtColor(src, code[, dstCn])# 参数说明:# 1.dst:转换后的图像;# 2.src:转换前原图像;# 3.code
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。
代码编写:Jupyter Notebook。
# 常见的色彩空间:RGB、GRAY、XYZ、YCrCb、HSV;
# 转换色彩空间类型函数:cv2.cvtColor();
# 语法格式:dst = cv2.cvtColor(src, code[, dstCn])
# 参数说明:
# 1.dst:转换后的图像;
# 2.src:转换前原图像;
# 3.code:色彩空间类型转换码;
# 4.dstCn:目标图像的通道数;
# 常见色彩空间类型转换码:
# a.cv2.COLOR_BGR2RGB:将BGR色彩空间转换为RGB色彩空间;
# b.cv2.COLOR_BGR2GRAY:将BGR色彩空间转换为GRAY色彩空间;
# c.cv2.COLOR_BGR2HSV:将BGR色彩空间转换为HSV色彩空间;
# d.cv2.COLOR_BGR2YCrCb:将BGR色彩空间转换为YCrCb色彩空间;
# e.cv2.COLOR_RGB2BGR:将RGB色彩空间转换为BGR色彩空间;
# f.cv2.COLOR_RGB2GRAY:将RGB色彩空间转换为GRAY色彩空间;
# g.cv2.COLOR_RGB2HSV:将RGB色彩空间转换为HSV色彩空间;
# h.cv2.COLOR_RGB2YCrCb:将RGB色彩空间转换为YCrCb色彩空间;
# 1.RGB色彩空间
# RGB色彩空间使用红(Red)、绿(Green)、蓝(Blue)三种基本颜色表示图像像素;
# RGB色彩空间中,图像的每个像素使用一个三元组表示,三元组的3个值依次:红色、绿色、蓝色,对应R、G、B通道;
# OpenCV默认采用BGR色彩空间,按B、G、R通道顺序表示图像;
import cv2 as cv
img1 = cv.imread("01.jpg")
img2 = cv.cvtColor(img1, cv.COLOR_BGR2RGB)
img3 = cv.cvtColor(img1, cv.COLOR_BGR2HSV)
cv.imshow("img1", img1)
cv.imshow("img2", img2)
cv.imshow("img3", img3)
cv.waitKey(0)
# 2.GRAY色彩空间
# GRAY色彩空间指8位灰度图像,颜色取值:[0,255],共256个灰度级;
# RGB色彩空间转换到GRAY色彩空间计算公式:GRAY = 0.299R+0.587G+0.114B
import cv2 as cv
img1 = cv.imread("apple.jpg")
img2 = cv.cvtColor(img1, cv.COLOR_BGR2GRAY)
cv.imshow("Apple_Initial", img1)
cv.imshow("BGR2GRAY", img2)
cv.waitKey(0)
# 3.YCrCb色彩空间
# YCrCb色彩空间用亮度Y、红色Cr、蓝色Cb表示图像;
# 从RGB色彩空间转换为YCrCb色彩空间计算公式:
# Y = 0.299R + 0.587G + 0.114B;
# Cr = 0.713(R - Y) + delta;
# Cb = 0.564(B - Y) + delta;
# delta = 128/32767/0.5,分别表示:8位图像、16位图像、单精度图像;
import cv2 as cv
img1 = cv.imread("apple.jpg")
img2 = cv.cvtColor(img1, cv.COLOR_BGR2YCrCb)
cv.imshow("apple", img1)
cv.imshow("BGR2YCrCb", img2)
cv.waitKey(0)
# 4.HSV色彩空间
# HSV色彩空间使用色调(Hue)、饱和度(Saturation)、亮度(Value)表示图像;
# 色调H表示颜色,用角度表示,取值范围:[0°,360°],从红色开始按逆时针方向计算;
# 如:红色--0°;黄色--60°;绿色--120°;青色--180°;蓝色--240°;紫色--300°;
# 饱和度S表示颜色接近光谱色的程度,或光谱色中混入白色的比例;光谱色中白光的比例越低,饱和度越高,颜色越深、艳;
# 光谱色中白色比例为0时,饱和度达到最高;饱和度取值范围:[0, 1];
# 亮度V表示颜色明亮的程度,取值范围:[0,1];
RGB色彩空间转换到HSV色彩空间计算公式
V=max(R,G,B);V≠0,S=V−min(R,G,B)V;V=0,S=0;V=R,H=60(G−B)V−min(R,G,B);V=G,H=120+60(B−R)V−min(R,G,B);V=B,H=240+60(R−G)V−min(R,G,B); \begin{aligned} &V = \max(R, G, B);\\ &V≠0,S=\frac{V-\min(R,G,B)}{V};\\ &V=0,S=0;\\ &V=R,H=\frac{60(G-B)}{V-\min(R,G,B)};\\ &V=G,H=120+\frac{60(B-R)}{V-\min(R,G,B)};\\ &V=B,H=240+\frac{60(R-G)}{V-\min(R,G,B)}; \end{aligned} V=max(R,G,B);V=0,S=VV−min(R,G,B);V=0,S=0;V=R,H=V−min(R,G,B)60(G−B);V=G,H=120+V−min(R,G,B)60(B−R);V=B,H=240+V−min(R,G,B)60(R−G);
import cv2 as cv
img1 = cv.imread("apple.jpg")
img2 = cv.cvtColor(img1, cv.COLOR_BGR2HSV)
cv.imshow("apple", img1)
cv.imshow("BGR2HSV", img2)
cv.waitKey(0)
更多推荐
所有评论(0)