在Python中,具有单个通道的图像的形状是一个问题
我拍摄了一张256x256的RGB图像,并将其切换到YCbCr 我创建了只导入Y通道的代码 这是我的密码:在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 ()
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)
谢谢你提供的细节。