#python-imaging-library #tensor
#python-imaging-library #тензор
Вопрос:
Я преобразую тензор в изображение pil, но цвет искажается. Я попытался преобразовать его в BGR, но результат все тот же.
trsn = transforms.ToPILImage()
temp = (target torch.mean(target)) *torch.std(target)
res = trsn(temp.to('cpu').detach().squeeze())
np_img=np.array(res)
bgr = cv2.cvtColor(np_img,cv2.COLOR_RGB2BGR)
pil_im = Image.fromarray(bgr)
print(res)
# plt.imshow(res)
plt.imshow(res,label="Epoch " str(i))
plt.show()
# im=Image.fromarray(np.uint8(target.to('cpu').detach().numpy()*255))
pil_im.save('f.jpeg')
У меня есть функция, которая преобразует тензор в numpy и может отображать изображение в matplotlib.
Вот функция
def imcnvt(image):
x = image.to("cpu").clone().detach().numpy().squeeze()
x = x.transpose(1,2,0)
x = x*np.array((0.5,0.5,0.5)) np.array((0.5,0.5,0.5))
return torch.Tensor(x)
Вот картинка, которую я получаю
и вот картинка, которую я хочу с помощью PIL
Комментарии:
1. PIL использует порядок RGB, поэтому вам не следует преобразовывать свой массив Numpy в BGR перед созданием из него изображения PIL.