CenterCrop in PyTorch

Buy Me a Coffee☕ *Memos: My post explains OxfordIIITPet(). CenterCrop() can crop an image, centering on it as shown below: *Memos: The 1st argument for initialization is size(Required-Type:int or tuple/list(int) or size()): *Memos: It's [height, width]. It must be 1

Feb 22, 2025 - 13:37
 0
CenterCrop in PyTorch

Buy Me a Coffee

*Memos:

CenterCrop() can crop an image, centering on it as shown below:

*Memos:

  • The 1st argument for initialization is size(Required-Type:int or tuple/list(int) or size()): *Memos:
    • It's [height, width].
    • It must be 1 <= x.
    • A tuple/list must be the 1D with 1 or 2 elements.
    • A single value(int or tuple/list(int)) means [size, size].
  • The 1st argument is img(Required-Type:PIL Image or tensor(int)): *Memos:
    • A tensor must be 2D or 3D.
    • Don't use img=.
  • v2 is recommended to use according to V1 or V2? Which one should I use?.
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import CenterCrop

cc = CenterCrop(size=100)

cc
# CenterCrop(size=(100, 100))

cc.size
# (100, 100)

origin_data = OxfordIIITPet(
    root="data",
    transform=None
)

s1000_data = OxfordIIITPet( # `s` is size.
    root="data",
    transform=CenterCrop(size=1000)
    # transform=CenterCrop(size=[1000])
    # transform=CenterCrop(size=[1000, 1000])
)

s800_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=800)
)

s600_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=600)
)

s400_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=400)
)

s200_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=200)
)

s100_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=100)
)

s50_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=50)
)

s10_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=10)
)

s1_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=1)
)

s600_900_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=[600, 900])
)

s900_600_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=[900, 600])
)

s200_300_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=[200, 300])
)

s300_200_data = OxfordIIITPet(
    root="data",
    transform=CenterCrop(size=[300, 200])
)

import matplotlib.pyplot as plt

def show_images1(data, main_title=None):
    plt.figure(figsize=[10, 5])
    plt.suptitle(t=main_title, y=0.8, fontsize=14)
    for i, (im, _) in zip(range(1, 6), data):
        plt.subplot(1, 5, i)
        plt.imshow(X=im)
    plt.tight_layout()
    plt.show()

show_images1(data=origin_data, main_title="origin_data")
show_images1(data=s1000_data, main_title="s1000_data")
show_images1(data=s800_data, main_title="s800_data")
show_images1(data=s600_data, main_title="s600_data")
show_images1(data=s400_data, main_title="s400_data")
show_images1(data=s200_data, main_title="s200_data")
show_images1(data=s100_data, main_title="s100_data")
show_images1(data=s50_data, main_title="s50_data")
show_images1(data=s10_data, main_title="s10_data")
show_images1(data=s1_data, main_title="s1_data")
print()
show_images1(data=origin_data, main_title="origin_data")
show_images1(data=s600_900_data, main_title="s600_900_data")
show_images1(data=s900_600_data, main_title="s900_600_data")
show_images1(data=s200_300_data, main_title="s200_300_data")
show_images1(data=s300_200_data, main_title="s300_200_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, s=None):
    plt.figure(figsize=[10, 5])
    plt.suptitle(t=main_title, y=0.8, fontsize=14)
    temp_s = s
    for i, (im, _) in zip(range(1, 6), data):
        plt.subplot(1, 5, i)
        if not temp_s:
            s = [im.size[1], im.size[0]]
        cc = CenterCrop(size=s)
        plt.imshow(X=cc(im))
    plt.tight_layout()
    plt.show()

show_images2(data=origin_data, main_title="origin_data")
show_images2(data=origin_data, main_title="s1000_data", s=1000)
show_images2(data=origin_data, main_title="s800_data", s=800)
show_images2(data=origin_data, main_title="s600_data", s=500)
show_images2(data=origin_data, main_title="s400_data", s=400)
show_images2(data=origin_data, main_title="s200_data", s=200)
show_images2(data=origin_data, main_title="s100_data", s=100)
show_images2(data=origin_data, main_title="s50_data", s=50)
show_images2(data=origin_data, main_title="s10_data", s=10)
show_images2(data=origin_data, main_title="s1_data", s=1)
print()
show_images2(data=origin_data, main_title="origin_data")
show_images2(data=origin_data, main_title="s600_900_data", s=[600, 900])
show_images2(data=origin_data, main_title="s900_600_data", s=[900, 600])
show_images2(data=origin_data, main_title="s200_300_data", s=[200, 300])
show_images2(data=origin_data, main_title="s300_200_data", s=[300, 200])

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description