如何校正Y_labels图片的形状

时间:2018-12-25 15:51:19

标签: python arrays image numpy reshape

尽管灰度图像的RGB形状为(H, W),但GrayScale图像的形状为(H, W, C)

加载灰色图片(在 DEPTH 的代码中调用)图像后,我的形状为(C: channels),可以显示该图片,其格式为:

(128, 128)

以同样的方式,加载 RGB图像(仅称为 IMAGE )时,我的形状为[[0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] ... [2 1 0 ... 0 0 0] [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0]] ,可以显示此图片,格式:

(128, 128, 3)

如何使灰度图像中的形状[[[21 34 27] [25 37 33] [26 37 33] ... [28 38 50] [18 20 20] [30 29 12]] ... [[20 30 33] [23 34 35] [23 35 35] ... [31 24 7] [34 29 1] [35 29 8]]] 像RGB图像一样?

如果我重塑形状(使用np.reshape或resize)仅添加了最后一个通道,则图像被破坏了,因此我无法显示或使用它。重塑后的图像的格式为(W, H, C)

(128, 128, 1)

[[[0]
  [0]
  [0]
  ...
  [0]
  [0]
  [0]]
 ...
 [[2]
  [1]
  [0]
  ...
  [0]
  [0]
  [0]]

Y_train = np.zeros((len(images), IMG_HEIGHT, IMG_WIDTH, 1), dtype=np.int8)
mask = np.zeros((IMG_HEIGHT, IMG_WIDTH, 1), dtype=np.int8)
for i in tqdm(range(len(depths))):
 mask = imread(depths[i])
 mask = resize(mask, (IMG_HEIGHT, IMG_WIDTH), mode='constant', preserve_range=True)
 Y_train[i] = mask
print(Y_train[0].shape)
print(Y_train[0])
imshow(Y_train[0]) #-- SUCCESFULL TO PRINT

1 个答案:

答案 0 :(得分:0)

尝试以下尺寸:

import numpy as np
a=np.array([[1,2],[3,4]])
b=np.tile(a.reshape(a.shape[0],a.shape[1],1),(1,1,3))

结果:

a
array([[1, 2],  
       [3, 4]])
b[:,:,0]
array([[1, 2],
       [3, 4]])
b[:,:,1]
array([[1, 2],
       [3, 4]])