Python: 记录一个关于图片直接转化为pytorch.tensor和numpy.array的不同之处的问题

img = Image.open(img_path).convert("RGB")

img2 = torchvision.transforms.functional.to_tensor(img)

print(img2)

img1 = np.array(img)

print(img1)

输出是这样的:

Python: 记录一个关于图片直接转化为pytorch.tensor和numpy.array的不同之处的问题_第1张图片

不仅shape不一样,而且值也是不一样的。

解释如下:

tensor = torch.from_numpy(np.asarray(PIL.Image.open(path))).permute(2, 0, 1).float() / 255
tensor = torchvision.transforms.functional.to_tensor(PIL.Image.open(path))  # 两种方法是一样的

PIL.Image.open()得到HWC格式,直接使用numpy 去转换得到(h,w,c)格式,而用to_tensor得到(c,h,w)格式且值已经除了255。

byte()相当于to(torch.uint8),tensor.numpy()是把tensor 转化为numpy.array格式。

在这里需要注意的是PIL和OPENCV的图像读取得到的格式都是HWC格式。

且torchvision.transforms.functional.to_tensor()对所有输入都是有变换操作。

你可能感兴趣的:(python,python:numpy,Pytorch)