在python中读取灰度图像显示3个颜色通道,而不是一个



我正在从包含灰度.png图像的数据集中读取python中的图像。

img_1.png已经是灰度图像。

img=cv2.imread('img_1.png')
print(img.shape)

在读取图像时,img.shape显示3个通道。

(16, 16, 3)

然而,它是一个灰度图像,所以它应该只有宽度和高度。

(16, 16)

我也在MATLAB中读过同样的灰度图像,它只显示宽度和高度。

但是在python中读取rgb图像并将其转换为灰度并没有显示3个通道。为什么会这样?

gray_img=cv2.imread('rgb_1.png',cv2.IMREAD_GRAYSCALE)
print(gray_img.shape)

输出:

(1050, 1400)

读取灰度图像的输出和python中转换为灰度的图像的输出相同吗?有什么区别?

我想在不显示通道的情况下读取灰度图像。

cv.imread总是将所有内容转换为BGR,除非您告诉它不要这样做。请使用cv.IMREAD_UNCHANGED标志来执行此操作。

您将尺寸的数量误认为是颜色尺寸的大小。

(h,w)是二维的,它等价于(h,w,1),其中颜色维度的大小为1。

(h,w,3)是三维的(元组长度为3),最后一位的3表示颜色维度长度为3(对于三种颜色)。