*Memos:
- My post explains ToPILImage() about no arguments.
- My post explains ToPILImage() about
mode
argument (1). - My post explains ToPILImage() about
mode
argument (2). - My post explains ToPILImage() about
mode
argument (4).
ToPILImage() can convert an Image([..., C, H, W]
), tensor or ndarray to a PIL(Pillow library) image([H, W, C]
) and doesn't scale its values to [0.0, 1.0]
as shown below. *It's about mode
argument (3):
from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import ToPILImage, ToImage, PILToTensor import torch Image_data = OxfordIIITPet( root="data", transform=ToImage() ) Tensor_data = OxfordIIITPet( root="data", transform=PILToTensor() ) import matplotlib.pyplot as plt def show_images(im, m=None): if m == None: m = [None for _ in range(len(im))] if len(im) > len(m): for _ in range(len(im)-len(m)): m.append(None) plt.figure(figsize=[14, 6]) for i in range(len(im)): image = im[i] if torch.is_tensor(image): dpart = str(image.dtype).split(".")[1] elif isinstance(image, np.ndarray): dpart = str(image.dtype) title = "m" + str(m[i]) + "_PILImage from " \ + type(image).__name__+ "(" + dpart + ")" plt.subplot(1, 3, (i+1)) tp = ToPILImage(mode=m[i]) plt.title(label=title, y=1, fontsize=14) plt.imshow(X=tp(image)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images(im=[Image_data[0][0], Tensor_data[0][0]], m=["RGB", "RGB"]) show_images(im=[Image_data[0][0], Tensor_data[0][0]], m=["YCbCr", "YCbCr"]) show_images(im=[Image_data[0][0], Tensor_data[0][0]], m=["HSV", "HSV"]) print() show_images(im=[torch.tensor([[[0]], [[1]]])], m=["LA"]) # int64 show_images(im=[torch.tensor([[[0]], [[1]], [[2]]]), torch.tensor([[[0]], [[1]], [[2]]]), torch.tensor([[[0]], [[1]], [[2]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[torch.tensor([[[0]], [[1]], [[2]], [[3]]]), torch.tensor([[[0]], [[1]], [[2]], [[3]]]), torch.tensor([[[0]], [[1]], [[2]], [[3]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[torch.tensor([[[0]]], dtype=torch.int32), torch.tensor([[[0]], [[1]]], dtype=torch.int32)], m=["I", "LA"]) show_images(im=[torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[torch.tensor([[[0.]]]), # float32 torch.tensor([[[0.]], [[1.]]])], m=["L", "LA"]) show_images(im=[torch.tensor([[[0.]], [[1.]], [[2.]]]), torch.tensor([[[0.]], [[1.]], [[2.]]]), torch.tensor([[[0.]], [[1.]], [[2.]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[torch.tensor([[[0.]]], dtype=torch.float64), torch.tensor([[[0.]], [[1.]]], dtype=torch.float64)], m=["L", "LA"]) show_images(im=[torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[torch.tensor([[[0.+0.j]], [[1.+0.j]]])], # complex64 m=["LA"]) show_images(im=[torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[torch.tensor([[[0.+0.j]], [[1.+0.j]]], dtype=torch.complex128)], m=["LA"]) show_images(im=[torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]], dtype=torch.complex128), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]], dtype=torch.complex128), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]], dtype=torch.complex128)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]], dtype=torch.complex128), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]], dtype=torch.complex128), torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]], dtype=torch.complex128)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[torch.tensor([[[True]], [[False]]])], m=["LA"]) show_images(im=[torch.tensor([[[True]], [[False]], [[True]]]), # bool torch.tensor([[[True]], [[False]], [[True]]]), torch.tensor([[[True]], [[False]], [[True]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[torch.tensor([[[True]], [[False]], [[True]], [[False]]]), torch.tensor([[[True]], [[False]], [[True]], [[False]]]), torch.tensor([[[True]], [[False]], [[True]], [[False]]])], m=["RGBA", "CMYK", "RGBX"])
Top comments (0)