Превратите изображение-маску в оттенках серого в RGB, изменив одну шкалу серого на определенный цвет.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Превратите изображение-маску в оттенках серого в RGB, изменив одну шкалу серого на определенный цвет.

Сообщение Anonymous »

При использовании torch и matplotlib мне удалось изменить цвет в оттенках серого #50, например. до красного. Однако только сохраняя изображение между ними.
Как это можно решить без сохранения изображения?
Извините за простой вопрос, но я новичок в torch, torchvision и matplotlib.
Вот мой код, который сначала сохраняет изображение:

Код: Выделить всё

import torch
import matplotlib.pyplot as plt
from torchvision.io import read_image

mask = read_image("A_mask.png")

mask_np = mask.numpy()
print(mask_np.shape)    #(1, 438, 567)
mask_np[mask_np == 4] = 50
output_image = torch.tensor(mask_np)

from torchvision import transforms
im = transforms.ToPILImage()(output_image).convert("RGB")
im.save("A-Mask-Colored-By-Hand.png")
Затем, чтобы загрузить его:

Код: Выделить всё

from torchvision import transforms

m = read_image("A-Mask-Colored-By-Hand.png")
#print(type(m))  # 
Вот мой вопрос, как преобразовать «im» в ожидаемый формат, вместо того, чтобы читать его. Этот блок кода - это то, что я пробовал, но он не работает:
Таким образом, закомментирование этого блока... будет работать, но неоптимально при сохранении и повторной загрузке.

Код: Выделить всё

from PIL import Image
#tensor_image = im.permute(1,2,0) # #
tensor_image = im
pil_image = Image.fromarray((tensor_image.numpy() * 255).astype("uint8"))
# here it stops, throwing an AttributeError: 'Image' object has no attribute 'numpy'
Этот блок кода работает:

Код: Выделить всё

m = pil_image
print(m.shape)    #(3, 438, 567)
m = m.numpy()
print(m.shape)    #(3, 438, 567)

cgrey = 50 # grey #50 > into red #255
mask = (m[0]==cgrey) & (m[1]==cgrey) & (m[2]==cgrey)
m[0][mask] = 255
m[1][mask] = 0
m[2][mask] = 0

output_image = torch.tensor(m)

from torchvision import transforms
im = transforms.ToPILImage()(output_image).convert("RGB")
print(im) # tensor
im.save("A-Mask-Colored-RGB.png")
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... pecific-co
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»