天天看点

预处理之随机旋转

随机旋转:transforms.RandomRotation

功能: 随机旋转图片

主要参数说明:

  1. degrees :旋转角度

    当为a时,在(-a, a)之间选择旋转角度

    当为(a, b)时,在(a, b)之间选择旋转角度

  2. resample :重采样方法
  3. expand :是否扩大图片,以保持原图信息
  4. center旋转点设置, 默认中心旋转
from PIL import Image
from torchvision import transforms
from utils import transform_invert


if __name__ == '__main__':
    # 1.读取图像
    img = Image.open(r"./test.jpg").convert('RGB')
    # 2.确定预处理方式
    img_transform = transforms.Compose([transforms.Resize((300,300)),  # 重置大小为300*300
                                        transforms.RandomRotation(60),  # 在-60到60之间随机进行旋转
                                        transforms.ToTensor()  # 转Tensor型变量
                                        ])
    # 3.进行预处理
    img_tensor = img_transform(img)
    # 4.逆Transform变换
    img = transform_invert(img_tensor, img_transform)  # input: shape=[c h w]
    # 5.进行预处理效果展示
    img.show()      
预处理之随机旋转
from PIL import Image
from torchvision import transforms
from utils import transform_invert


if __name__ == '__main__':
    # 1.读取图像
    img = Image.open(r"./test.jpg").convert('RGB')
    # 2.确定预处理方式
    img_transform = transforms.Compose([transforms.Resize((300,300)),  # 重置大小为300*300
                                        transforms.RandomRotation(90,expand=True),  # expand=True 会改变图像尺寸,来保持图像的完整性
                                        transforms.ToTensor()  # 转Tensor型变量
                                        ])
    # 3.进行预处理
    img_tensor = img_transform(img)
    # 4.逆Transform变换
    img = transform_invert(img_tensor, img_transform)  # input: shape=[c h w]
    # 5.进行预处理效果展示
    img.show()      
预处理之随机旋转
预处理之随机旋转

配合使用,需要再重新Resize一下

img_transform = transforms.Compose([transforms.Resize((300,300)),  # 重置大小为300*300
                                        transforms.RandomRotation(90,expand=True),  # 垂直翻转
                                        transforms.Resize((300, 300)),  # 重置大小为300*300
                                        transforms.ToTensor()  # 转Tensor型变量
                                        ])      

改变旋转中心

from PIL import Image
from torchvision import transforms
from utils import transform_invert


if __name__ == '__main__':
    # 1.读取图像
    img = Image.open(r"./test.jpg").convert('RGB')
    # 2.确定预处理方式
    img_transform = transforms.Compose([transforms.Resize((300,300)),  # 重置大小为300*300
                                        transforms.RandomRotation(90,center=(0,0)),  # 改变旋转中心
                                        transforms.Resize((300, 300)),  # 重置大小为300*300
                                        transforms.ToTensor()  # 转Tensor型变量
                                        ])
    # 3.进行预处理
    img_tensor = img_transform(img)
    # 4.逆Transform变换
    img = transform_invert(img_tensor, img_transform)  # input: shape=[c h w]
    # 5.进行预处理效果展示
    img.show()