*Memos:
- My post explains ToPILImage() about no arguments.
-
My post explains ToPILImage() about
mode
argument (2). -
My post explains ToPILImage() about
mode
argument (3). -
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 (1):
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()
)
tp = ToPILImage()
tp = ToPILImage(mode="RGB")
tp(Image_data[0])
tp(Tensor_data[0])
# (, 0)
print(tp(Image_data[0][0]))
print(tp(Tensor_data[0][0]))
#
tp = ToPILImage(mode="YCbCr")
tp(Image_data[0])
tp(Tensor_data[0])
# (, 0)
print(tp(Image_data[0][0]))
print(tp(Tensor_data[0][0]))
#
tp = ToPILImage(mode="HSV")
tp(Image_data[0])
tp(Tensor_data[0])
# (, 0)
print(tp(Image_data[0][0]))
print(tp(Tensor_data[0][0]))
#
tp = ToPILImage()
tp = ToPILImage(mode="I")
tp((torch.tensor([[[0]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage(mode="LA")
tp((torch.tensor([[[0]], [[1]]]), 0)) # int64
tp((torch.tensor([[[0]], [[1]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage(mode="RGB")
tp((torch.tensor([[[0]], [[1]], [[2]]]), 0))
tp((torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage(mode="YCbCr")
tp((torch.tensor([[[0]], [[1]], [[2]]]), 0))
tp((torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage(mode="HSV")
tp((torch.tensor([[[0]], [[1]], [[2]]]), 0))
tp((torch.tensor([[[0]], [[1]], [[2]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage(mode="RGBA")
tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]]), 0))
tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage(mode="CMYK")
tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]]), 0))
tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage(mode="RGBX")
tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]]), 0))
tp((torch.tensor([[[0]], [[1]], [[2]], [[3]]], dtype=torch.int32), 0))
# (, 0)
tp = ToPILImage()
tp = ToPILImage(mode="L")
tp((torch.tensor([[[0.]]]), 0)) # float32
tp((torch.tensor([[[0.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage()
tp = ToPILImage(mode="LA")
tp((torch.tensor([[[0.]], [[1.]]]), 0))
tp((torch.tensor([[[0.]], [[1.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage()
tp = ToPILImage(mode="RGB")
tp((torch.tensor([[[0.]], [[1.]], [[2.]]]), 0))
tp((torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage(mode="YCbCr")
tp((torch.tensor([[[0.]], [[1.]], [[2.]]]), 0))
tp((torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage(mode="HSV")
tp((torch.tensor([[[0.]], [[1.]], [[2.]]]), 0))
tp((torch.tensor([[[0.]], [[1.]], [[2.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage()
tp = ToPILImage(mode="RGBA")
tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), 0))
tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage(mode="CMYK")
tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), 0))
tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage(mode="RGBX")
tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]]), 0))
tp((torch.tensor([[[0.]], [[1.]], [[2.]], [[3.]]], dtype=torch.float64), 0))
# (, 0)
tp = ToPILImage(mode="LA")
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]]]), 0)) # complex64
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]]], dtype=torch.complex128), 0))
# (, 0)
tp = ToPILImage(mode="RGB")
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), 0))
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]],
dtype=torch.complex128), 0))
# (, 0)
tp = ToPILImage(mode="YCbCr")
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), 0))
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]],
dtype=torch.complex128), 0))
# (, 0)
tp = ToPILImage(mode="HSV")
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]]), 0))
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]]],
dtype=torch.complex128), 0))
# (, 0)
tp = ToPILImage(mode="RGBA")
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), 0))
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]],
dtype=torch.complex128), 0))
# (, 0)
tp = ToPILImage(mode="CMYK")
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), 0))
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]],
dtype=torch.complex128), 0))
# (, 0)
tp = ToPILImage(mode="RGBX")
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]]), 0))
tp((torch.tensor([[[0.+0.j]], [[1.+0.j]], [[2.+0.j]], [[3.+0.j]]],
dtype=torch.complex128), 0))
# (, 0)
tp = ToPILImage(mode="LA")
tp((torch.tensor([[[True]], [[False]]]), 0)) # bool
# (, 0)
tp = ToPILImage(mode="RGB")
tp((torch.tensor([[[True]], [[False]], [[True]]]), 0))
# (, 0)
tp = ToPILImage(mode="YCbCr")
tp((torch.tensor([[[True]], [[False]], [[True]]]), 0))
# (, 0)
tp = ToPILImage(mode="HSV")
tp((torch.tensor([[[True]], [[False]], [[True]]]), 0))
# (, 0)
tp = ToPILImage(mode="RGBA")
tp((torch.tensor([[[True]], [[False]], [[True]], [[False]]]), 0))
# (, 0)
tp = ToPILImage(mode="CMYK")
tp((torch.tensor([[[True]], [[False]], [[True]], [[False]]]), 0))
# (, 0)
tp = ToPILImage(mode="RGBX")
tp((torch.tensor([[[True]], [[False]], [[True]], [[False]]]), 0))
# (, 0)