有少数颜色空间可以表示图像,如RGB,BGR,HSV,CMYK等,但它们都有一些共同点。它们是这些色彩空间用来共同形成图像的通道。灰度图像
灰度图像是单通道图像,其中每个像素只携带有关光强度的信息。这些图像完全由灰色阴影组成。灰度图像不应与仅包含黑白像素的黑白图像(二值图像)混淆。在二值图像中,一个像素要么是黑色,要么是白色。它们之间没有颜色。但是灰度图像的像素有很大的灰度范围。现在让我们看看打印灰度图像阵列时得到了什么。为此,我们使用以下代码:import cv2 as cvimage = cv.imread("D://medium_blogs//architecture.jpg")gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)print(gray)print("")print(gray.shape)输出为:如你所见,打印的阵列是一个二维阵列,其中每个数字代表一个像素,数字的值是该像素中的光强度。由于上述图像阵列中的每个数字代表一个像素,因此称为单通道图像。计算机视觉中每个像素的光强度是从0到255测量的,称为像素值。像素值为0时为黑色,像素值为255时为白色。因为我们使用OpenCV来读取图像数组,所以上面数组的尺寸是形状高度x宽度。在这里,图像沿y轴(高度)有6016个像素,沿x轴(宽度)有4016个像素。RGB图像与灰度图像不同,RGB图像是三通道的。每个像素由三个通道组成,每个通道代表一种颜色。现在,让我们打印一个RGB图像并观察结果。我们使用以下代码:import cv2 as cvimage = cv.imread("D://medium_blogs//architecture.jpg")RGB = cv.cvtColor(image, cv.COLOR_BGR2RGB)print(RGB)print("")print(RGB.shape)输出为:这次的输出是一个三维数组!在此图像中,每个像素有三个通道。第二维度中的每个数组表示一个像素。第0个指标是红光强度,第1个指标是绿光强度,第2个指标是蓝光强度。打印此图像的形状时,它将打印一个包含高度、宽度和通道数的元组。将这三个值相乘,得到图像数组中的值总数。分别显示每个通道现在我们知道了什么是通道,让我们看看每个通道分别是什么样子。观察下图:现在让我们使用以下代码拆分上面图像的通道:import cv2 as cvimport numpy as npimage = cv.imread("D://medium_blogs//colours.jpg")image = cv.cvtColor(image, cv.COLOR_BGR2RGB)(R,G,B) = cv.split(image)cv.namedWindow("Blue", cv.WINDOW_NORMAL)cv.namedWindow("Green", cv.WINDOW_NORMAL)cv.namedWindow("Red", cv.WINDOW_NORMAL)cv.imshow("Blue",B)cv.imshow("Green", G)cv.imshow("Red", R)cv.imwrite("D://medium_blogs//channel_red.jpg", R)cv.imwrite("D://medium_blogs//channel_green.jpg", G)cv.imwrite("D://medium_blogs//channel_blue.jpg", B)if cv.waitKey(0): cv.destroyAllWindows()我们使用OpenCV的split函数来分割通道。代码的输出为:我知道现在有几个问题扰乱了你的思维过程。所以让我解释一下。红色通道绿色通道蓝色通道为什么它们是灰度的?这是因为,当我们分割通道时,每个图像中的像素现在只有一个通道。所以它们是灰色的。如何区分这些图像?把每个图像和原始图像比较一下。让我们拍摄红色通道的图像。你可以看到原始图像中包含红色的区域在红色通道图像中更亮。这仅仅意味着,对原始图像的红色贡献较大的区域在红色通道的灰度图像中会更亮。贡献较少或没有贡献的区域是黑暗的。这适用于所有三个通道。为什么在绿色和红色通道中黄色较浅?那是因为黄色是红色和绿色的混合物。所以绿色和红色对黄色的贡献很大。✄------------------------------------------------
双一流高校研究生团队创建 ↓
专注于计算机视觉原创并分享相关知识 ☞
整理不易,点赞三连!