Конвертировать 3-канальное изображение в 1-канальный python - PullRequest
0 голосов
/ 24 апреля 2020

Я использую Unet для сегментации в python, и мой вывод unet представляет собой маску с этой формой [512,512,1].

После предсказанной маски я хочу сделать f1 оценку между предсказанной маской и реальной маской тестового изображения. Мне нужно преобразовать настоящую маску из [512,512,3] в [512,512,1], и я просто могу преобразовать в [512,512].

Может кто-нибудь мне помочь? Изображение с моими выводами

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Я узнаю ответ. Мне пришлось удалить одну ось

предсказано. Форма [512,512,1]

предсказано = предсказано [:,:,:, 0]

предсказано. Форма [512,512]

0 голосов
/ 24 апреля 2020

Вы можете использовать Подушку

from PIL import Image
img = Image.open('image.png').convert('LA')
img.save('greyscale.png')
          • ИЛИ

Использование matplotlib и по формуле

Y' = 0.2989 R + 0.5870 G + 0.1140 B

Вы можете сделать:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

def rgb2gray(rgb):
    return np.dot(rgb[...,:3], [0.2989, 0.5870, 0.1140])

img = mpimg.imread('image.png')
gray = rgb2gray(img)
plt.imshow(gray, cmap=plt.get_cmap('gray'), vmin=0, vmax=1)
plt.show()

Вы можете отослать этот ответ для получения дополнительной информации

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