Меняет ли канал изображения изменение изображения? - PullRequest
0 голосов
/ 11 февраля 2020

, поэтому у меня есть изображения в формате (ширина, высота, канал). Мой оригинальный канал в RGB. Поэтому я загружаю изображения в оттенках серого

for r, d, file in tqdm(os.walk(path)):
  for i in tqdm(file):
    if i[0:2]=="01":
      dist_one.append(cv2.imread(os.path.join(path,i),cv2.IMREAD_GRAYSCALE))
    else:
      dist_two.append(cv2.imread(os.path.join(path,i),cv2.IMREAD_GRAYSCALE))

Предположим, изображения имеют форму (187, 187). Поэтому я добавляю канал, используя код

g = np.expand_dims(dist_one[0], axis=0)

Но это разрывает изображения, когда я пытаюсь построить изображение.

TypeError Traceback (последний вызов последнего) в () 1 импортировать matplotlib.pyplot как plt 2 ----> 3 plt.imshow (dist_one [0], cmap = 'grey') 4 plt.show () 5 кадров / usr / local / lib / python3 .6 / dist-packages / matplotlib / image.py в set_data (self, A) 688 или self._A.ndim == 3 и self._A.shape [-1] в [3, 4]): 689 поднять TypeError ("Неверный" shape {} для данных изображения "-> 690
.format (self._A.shape)) 691 692, если self._A.ndim == 3: TypeError: Неверная форма (1, 187, 187) для данных изображения

Но это работает, когда канал ставится последним. g = np.expand_dims(dist_one[0], axis=-1). В чем причина этого? Мне нужен канал в первую очередь для pytorch. Или я должен тренировать модель с разбитыми изображениями?

1 Ответ

0 голосов
/ 11 февраля 2020

Pytorch требует [C, H, W], в то время как numpy и matplotlib (именно здесь выдается ошибка) требуют, чтобы изображение было [H, W, C]. Чтобы решить эту проблему, я бы предложил построить график g, полученный этим g = np.expand_dims(dist_one[0], axis=-1). Перед отправкой в ​​PyTorch вы можете сделать одну из двух вещей. Вы можете использовать 'g = torch.tensor (g) .permute (2, 0, 1) `, что приведет к тензору [C, H, W], или вы можете использовать установку PyTorch Dataset и Dataloader, которая обрабатывает другие вещи, как пакетирование для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...