前言

torchvision.transforms.CenterCrop()函数是中心裁剪函数,可以将图片按照指定的size进行裁剪,并保留中心点

官方Api介绍

_Crops the given image at the center.
If the image is torch Tensor, it is expected
to have […, H, W] shape, where … means an arbitrary number of leading dimensions.
If image size is smaller than output size along any edge, image is padded with 0 and then center cropped.

Args:
size (sequence or int): Desired output size of the crop. If size is an
int instead of sequence like (h, w), a square crop (size, size) is
made. If provided a sequence of length 1, it will be interpreted as (size[0], size[0])._

需准备的东西

随便的一张图片
CenterCrop() - 图1

演示代码

导入库

  1. # 导入库
  2. import torchvision.transforms as transforms
  3. import torchvision as tv
  4. import matplotlib.pyplot as plt
  5. import matplotlib
  6. # 设置字体 这两行需要手动设置
  7. matplotlib.rcParams['font.sans-serif']=['SimHei']
  8. matplotlib.rcParams['axes.unicode_minus']=False

将图片按照中心1000像素点进行裁剪

  1. # 1. 中心裁剪
  2. transform = transforms.Compose([
  3. transforms.CenterCrop(1000)
  4. ])
  5. # 读取图片
  6. picTensor = tv.io.read_image('testpic.png')
  7. # 转换图片
  8. picTransformed = transform(picTensor)
  9. # 显示
  10. print('图像处理之前的图片大小:', picTensor.shape)
  11. print('图像之后的图片大小:', picTransformed.shape)
  12. picNumpy = picTensor.permute(1, 2, 0).numpy()
  13. plt.imshow(picNumpy)
  14. plt.title('图像处理之前的图片')
  15. plt.show()
  16. picNumpy = picTransformed.permute(1, 2, 0).numpy()
  17. plt.imshow(picNumpy)
  18. plt.title('图像处理之后的图片')
  19. plt.show()

裁剪之前的图片大小: torch.Size([3, 2100, 3174]) 裁剪之后的图片大小: torch.Size([3, 1000, 1000]) image.png image.png

将图片按照指定size=(1200, 900)进行裁剪

  1. # 1. 中心裁剪
  2. transform = transforms.Compose([
  3. transforms.CenterCrop(size=(1200, 900))
  4. ])
  5. # 读取图片
  6. picTensor = tv.io.read_image('testpic.png')
  7. # 转换图片
  8. picTransformed = transform(picTensor)
  9. # 显示
  10. print('裁剪之前的图片大小:', picTensor.shape)
  11. print('裁剪之后的图片大小:', picTransformed.shape)
  12. picNumpy = picTensor.permute(1, 2, 0).numpy()
  13. plt.imshow(picNumpy)
  14. plt.show()
  15. picNumpy = picTransformed.permute(1, 2, 0).numpy()
  16. plt.imshow(picNumpy)
  17. plt.show()

裁剪之前的图片大小: torch.Size([3, 2100, 3174]) 裁剪之后的图片大小: torch.Size([3, 1200, 900]) CenterCrop() - 图4 image.png