Вернуть все измерения, если есть 3 канала, иначе вернуть 0 - PullRequest
0 голосов
/ 25 марта 2020

Я хочу построить некоторые изображения, которые иногда имеют оттенки серого, иногда цветные.

Так как я использую pytorch, преобразованные изображения могут быть (50, 100, 1) или (50, 100, 3) в зависимости от того, являются ли они цвет или нет. Поскольку matplotlib не может взять прежний для изображения, мне нужно вернуть следующие формы:

(100, 100, 3) # if it's a color picture
(100, 100) # if it's a grayscale picture

С этими формами matplotlib может иметь дело. Вот как выглядит мой рабочий процесс:

import numpy as np
import matplotlib.pyplot as plt

h, w = 50, 100

grey = np.random.randint(0, 256, (h, w, 1))
color = np.random.randint(0, 256, (h, w, 3)

С той же линией мне нужно иметь возможность рисовать изображения, которые могут быть как цветными, так и серыми.

plt.imshow(grey[:, :, 0 if grey.shape[-1] == 1 else :]
plt.imshow(color[:, :, 0 if color.shape[-1] == 1 else :]

Но это неправильный синтаксис python.

1 Ответ

1 голос
/ 25 марта 2020

Не могли бы вы просто написать

plt.imshow(grey[:,:,0] if grey.shape[-1] == 1 else grey)
plt.imshow(color[:,:,0] if color.shape[-1] == 1 else color)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...