*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 (3).
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 (4):
from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import ToPILImage, ToImage, PILToTensor import numpy as np 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=[np.array([[[0]]]), np.array([[[0, 1]]])], # int32 m=["I", "LA"]) show_images(im=[np.array([[[0, 1, 2]]]), np.array([[[0, 1, 2]]]), np.array([[[0, 1, 2]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0, 1, 2, 3]]]), np.array([[[0, 1, 2, 3]]]), np.array([[[0, 1, 2, 3]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0, 1]]], dtype=np.int64)], m=["LA"]) show_images(im=[np.array([[[0, 1, 2]]], dtype=np.int64), np.array([[[0, 1, 2]]], dtype=np.int64), np.array([[[0, 1, 2]]], dtype=np.int64)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0, 1, 2, 3]]], dtype=np.int64), np.array([[[0, 1, 2, 3]]], dtype=np.int64), np.array([[[0, 1, 2, 3]]], dtype=np.int64)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.]]]), np.array([[[0., 1.]]])], # float64 m=["L", "LA"]) show_images(im=[np.array([[[0., 1., 2.]]]), np.array([[[0., 1., 2.]]]), np.array([[[0., 1., 2.]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0., 1., 2., 3.]]]), np.array([[[0., 1., 2., 3.]]]), np.array([[[0., 1., 2., 3.]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.]]], dtype=np.float32), np.array([[[0., 1.]]], dtype=np.float32)], m=["L", "LA"]) show_images(im=[np.array([[[0., 1., 2.]]], dtype=np.float32), np.array([[[0., 1., 2.]]], dtype=np.float32), np.array([[[0., 1., 2.]]], dtype=np.float32)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0., 1., 2., 3.]]], dtype=np.float32), np.array([[[0., 1., 2., 3.]]], dtype=np.float32), np.array([[[0., 1., 2., 3.]]], dtype=np.float32)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.+0.j, 1.+0.j]]])], m=["LA"]) # complex128 show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]]), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]])], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[0.+0.j, 1.+0.j]]], dtype=np.complex64)], m=["LA"]) show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j]]], dtype=np.complex64)], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], dtype=np.complex64), np.array([[[0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j]]], dtype=np.complex64)], m=["RGBA", "CMYK", "RGBX"]) print() show_images(im=[np.array([[[True, False]]])], m=["LA"]) # bool show_images(im=[np.array([[[True, False, True]]]), np.array([[[True, False, True]]]), np.array([[[True, False, True]]])], m=["RGB", "YCbCr", "HSV"]) show_images(im=[np.array([[[True, False, True, False]]]), np.array([[[True, False, True, False]]]), np.array([[[True, False, True, False]]])], m=["RGBA", "CMYK", "RGBX"])
Top comments (0)