PIL Numpy Tensor 中图像形状对应的意义
图像可以转为PIL, Numpy以及Pytorch的Tensor中的任意一种形式,并且三种形式之间可以互相转换,并且三者都有可以打印图像形状的方式,但是三者打印出的形状代表的意义并不相同:
cat.jpg
图片为一张像素为889*500
的猫咪图像,如下所示:
image = Image.open('./cat.jpg').convert("RGBA")
image.size
>>> (889, 500)
image_array = np.array(image)
image_array.shape
>>> (500, 889, 4)
transform = transforms.Compose([transforms.ToTensor(),])
image_tensor = transform(image)
image_tensor.shape
>>> torch.Size([4, 500, 889])
可以看出,将原始的图像输入到PIL中的Image.open()
方法中,得到的维度输出为(宽度,高度),而将Image转为numpy类型,得到的维度输出为(高度,宽度,通道数),将Image转为tensor类型,得到的维度输出为(通道数,高度,宽度)。