*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"])