嗨,我是图像处理方面的新手,现在我正在使用 python 处理图像以获得更多洞察力。但是,我对颜色通道的理解有点不满意。
在我看来,形状为 (400, 400, 3) 的 RGB 图像意味着图像由 3 个通道组成,每个通道有 400 * 400 像素。相同位置的三个不同颜色的像素代表整个图像中的一个完整像素。
所以 image[:, :, 0] 代表红色通道中的图像。如果我显示它,它应该给出一个全红色的图像。我这样做了,但输出并不理想:
plt.figure(figsize=(15,5))
plt.imshow(im[:,:,0]) # im is the image
Run Code Online (Sandbox Code Playgroud)
抱歉,我还没有足够的信用来上传图像,上面的输出是绿色的,但不是完全绿色。
然后我从其他人那里得到了这个想法,他们将 im[:,:,0] 分配给与图像具有相同形状的零数组。然后输出完全是红色的。代码是:
tmp_im = np.zeros(im.shape, dtype="uint8")
tmp_im[:,:,0] = im[:,:,0]
plt.figure(figsize=(15,5))
plt.imshow(tmp_im)
Run Code Online (Sandbox Code Playgroud)
所以我在想,这两者之间唯一的区别是第一个代码中imshow()的参数是2D,它只包含R通道中的元素。但是,第二个是3D,虽然其他两个通道中的元素为0。这是导致输出不同的原因吗?
如果我的理解有任何错误,请纠正我。
非常感谢你。