在Python中,具有单个通道的图像的形状是一个问题

在Python中,具有单个通道的图像的形状是一个问题,python,image,python-imaging-library,Python,Image,Python Imaging Library,我拍摄了一张256x256的RGB图像,并将其切换到YCbCr 我创建了只导入Y通道的代码 这是我的密码: from PIL import Image import numpy as np im = Image.open ('test.bmp') img = im.convert ('YCbCr') arr_img = np.asarray (img) arr_img = arr_img [:,:, 0] img = Image.fromarray (arr_img) img.show ()

我拍摄了一张256x256的RGB图像,并将其切换到YCbCr

我创建了只导入Y通道的代码

这是我的密码:

from PIL import Image
import numpy as np

im = Image.open ('test.bmp')
img = im.convert ('YCbCr')
arr_img = np.asarray (img)
arr_img = arr_img [:,:, 0]

img = Image.fromarray (arr_img)
img.show ()
完成此操作后,我创建了一个带有我想要的Y通道的图像

我很高兴

但问题就在这里

我运行了这个代码

print (np.shape (arr_img))
这里,我想要的是(256,256,1)

但是,上面的代码输出(256、256)

所以我把“arr_img=arr_img[:,:,0]”改为“arr_img=arr_img[:,:,:1]”

但是,由于错误,它没有运行

我把RGB图像做成了一个有三个YCbCr通道的图像

我以为它会是我只导入第一个通道“Y”时的大小(256、256、1)


如何获得(256,256,1)的形状?

一种可能是手动添加缺少的尺寸:

arr\u img=np.zero([256256])


arr\u img=arr\u img.reformate(*arr\u img.shape,1)
Numpy有一个内置函数
np。展开\u dims()
以添加额外的尺寸

例如:

a = np.random.randn(2,3)

a.shape

(2, 3)

a = np.expand_dims(a, axis=2)

a.shape

(2, 3, 1)

谢谢你提供的细节。