从1通道到3通道的灰度图像,另外2个通道仅由零组成

时间:2019-07-18 09:00:07

标签: python-3.x image

是否可以通过添加2个仅包含零的通道来使1通道的图像变为3通道的图像?

这是我要通过添加仅由零组成的2个额外通道将图像转换为3个通道图像的文件

images.shape
(100, 120, 120, 1)

这是我现在用来在1个通道中导入图像的代码

def loadImages():

    dirname = '/c/disk/img_t1/'
    x_orig = np.zeros((100, 120, 120), dtype=np.float32) 

    for f in range(x_orig.shape[0]):
        img    = Image.open(dirname + 'img_t1_%05d.tiff' % (f))  
        img    = np.array(img)
        x_orig[f] = img


    path = '/c/labels.csv'    
    labels = pd.read_csv(path, usecols=["proportional", "category"],
                       sep=";" )
    y_orig = np.array(labels['category'])

    return x_orig, y_orig


x, y = loadImages()
plt.imshow(x[3])

这就是图像的样子 enter image description here

如果使用相同的代码,我只需从包PIL中添加.convert('RGB)即可添加其他2个通道

def loadImages():

    dirname = '/c/disk/img_t1/'
    x_orig = np.zeros((100, 120, 120,3), dtype=np.float32) 

    for f in range(x_orig.shape[0]):
        img    = Image.open(dirname + 'img_t1_%05d.tiff' % (f)).convert('RGB')  
        img    = np.array(img)
        x_orig[f] = img


    path = '/c/labels.csv'    
    labels = pd.read_csv(path, usecols=["proportional", "category"],
                       sep=";" )
    y_orig = np.array(labels['category'])

    return x_orig, y_orig


x, y = loadImages()
plt.imshow(x[3])

图片看起来像这样

enter image description here

所以我想要这样的东西

images.shape
(100, 120, 120, 3)

1 个答案:

答案 0 :(得分:0)

我想您正在尝试进行一些机器学习方面的培训。

我认为您的文件可能是单通道32位浮点TIFF,尽管您实际上已经共享了PNG文件。

我认为问题在于PIL / Pillow不支持RGB(3通道)浮动-请参见documentation

我不知道您接下来打算如何处理数据,因此我不知道您需要什么图像处理功能。但我怀疑您可能需要移至其他库-OpenCV或Wand或pyvips或...