python的image用法_python – PyTorch – 如何正确使用“toPILImage”

本文探讨了使用torchvision的toPILImage方法时遇到的图像颜色显示异常问题。作者尝试将预处理过的图像还原为原始RGB格式进行展示,但遇到了颜色失真现象。文中详细记录了解决这一问题的过程,并分享了一个部分有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想知道,我是否正确地使用了torchvision的

toPILImage.我想使用它来查看初始图像转换应用于数据集后图像的外观.

当我在下面的代码中使用它时,出现的图像具有奇怪的颜色,如this one.原始图像是常规的RGB图像.

这是我的代码:

import os

import torch

from PIL import Image, ImageFont, ImageDraw

import torch.utils.data as data

import torchvision

from torchvision import transforms

import matplotlib.pyplot as plt

# Image transformations

normalize = transforms.Normalize(

mean=[0.485, 0.456, 0.406],

std=[0.229, 0.224, 0.225]

)

transform_img = transforms.Compose([

transforms.Resize(256),

transforms.CenterCrop(256),

transforms.ToTensor(),

normalize ])

train_data = torchvision.datasets.ImageFolder(

root='./train_cl/',

transform=transform_img

)

test_data = torchvision.datasets.ImageFolder(

root='./test_named_cl/',

transform=transform_img

)

train_data_loader = data.DataLoader(train_data,

batch_size=4,

shuffle=True,

num_workers=4) #num_workers=args.nThreads)

test_data_loader = data.DataLoader(test_data,

batch_size=32,

shuffle=False,

num_workers=4)

# Open Image from dataset:

to_pil_image = transforms.ToPILImage()

my_img, _ = train_data[248]

results = to_pil_image(my_img)

results.show()

编辑:

我不得不在Torch变量上使用.data来获得张量.

我还需要在转置之前重新调整numpy数组.我找到了一个有效的解决方案here,但它并不总能正常工作.我怎么能做得更好?

for i, data in enumerate(train_data_loader, 0):

img, labels = data

img = Variable(img)

break

image = img.data.cpu().numpy()[0]

# This worked for rescaling:

image = (1/(2*2.25)) * image + 0.5

# Both of these didn't work:

# image /= (image.max()/255.0)

# image *= (255.0/image.max())

image = np.transpose(image, (1,2,0))

plt.imshow(image)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值