Как исправить форму изображений Y_labels - PullRequest
0 голосов
/ 25 декабря 2018

Изображение в GrayScale имеет форму (H, W), хотя изображение RGB имеет (H, W, C) форму (C: channels).

Когда загружено изображение Серый (вызывается с кодом DEPTH ), у меня была форма (128, 128), и я могу показать это изображение в формате:

[[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]]

Точно так же, когда загружено RGB-изображение (называемое просто IMAGE ), у меня была форма (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]]]

Как мне сделать так, чтобы фигура (W, H, C) на сером изображении напоминала RGB-изображение?

Если я изменяю форму (используя np.reshape или изменяю размер), добавляя только последний канал, ломаю изображение, и я не могу показать или использовать его.Изображение с измененной формой имеет вид (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

test = np.resize(test, (IMG_HEIGHT, IMG_WIDTH, 1))
print(test.shape)
print(test)
imshow(test) #-- FAIL TO PRINT

1 Ответ

0 голосов
/ 25 декабря 2018

примерьте этот размер:

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]])
...