mindspore.dataset.vision.py_transforms.RandomAffine
- class mindspore.dataset.vision.py_transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=Inter.NEAREST, fill_value=0)[源代码]
对输入PIL图像进行随机仿射变换。
参数:
degrees (Union[float, Sequence[float, float]]) - 旋转角度的随机选取范围,单位为度。若输入float,将从(- degrees , degrees )中随机生成旋转角度;若输入Sequence[float, float],需按(min, max)顺序排列。
translate (Sequence[float, float],可选) - 水平与垂直平移比例的随机选取范围,按照(tx, ty)顺序排列,水平与垂直平移的距离将分别从(-tx * width, tx * width)与(-ty * height, ty * height)中随机生成,默认值:None,表示不平移。
scale (Sequence[float, float],可选) - 放缩比例的随机选取范围,默认值:None,表示不进行放缩。
shear (Union[float, Sequence[float, float], Sequence[float, float, float, float]],可选) - 剪切角度的随机选取范围,单位为度。若输入float,将进行X轴剪切,剪切角度从(- shear , shear )中随机生成;若输入Sequence[float, float],将进行X轴剪切,剪切角度从( shear [0], shear [1])中随机生成;若输入Sequence[int, int, int, int],将分别进行X轴和Y轴剪切,剪切角度分别从( shear [0], shear [1])和( shear [2], shear [3])中随机生成。默认值:None,表示不进行剪切。
resample (Inter,可选) - 插值方式,取值可为 Inter.BILINEAR、Inter.NEAREST 或 Inter.BICUBIC。若输入的PIL图像模式为”1”或”P”,将直接使用 Inter.NEAREST 作为插值方式。默认值:Inter.NEAREST。
Inter.BILINEAR:双线性插值。
Inter.NEAREST:最近邻插值。
Inter.BICUBIC:双三次插值。
fill_value (Union[int, tuple[int, int, int]],可选) - 变换图像之外区域的像素填充值。若输入int,将以该值填充RGB通道;若输入tuple[int, int, int],将分别用于填充R、G、B通道。仅支持Pillow 5.0.0以上版本。默认值:0。
异常:
TypeError - 当 degrees 的类型不为float或Sequence[float, float]。
TypeError - 当 translate 的类型不为Sequence[float, float]。
TypeError - 当 scale 的类型不为Sequence[float, float]。
TypeError - 当 shear 的类型不为float或Sequence[float, float]。
TypeError - 当 resample 的类型不为
mindspore.dataset.vision.Inter
。TypeError - 当 fill_value 的类型不为int或tuple[int, int, int]。
ValueError - 当 degrees 为负数。
ValueError - 当 translate 取值不在[-1.0, 1.0]范围内。
ValueError - 当 scale 为负数。
ValueError - 当 shear 不为正数。
RuntimeError - 当输入图像的shape不为<H, W>或<H, W, C>。
- 支持平台:
CPU
样例:
>>> from mindspore.dataset.transforms.py_transforms import Compose >>> >>> transforms_list = Compose([py_vision.Decode(), ... py_vision.RandomAffine(degrees=15, translate=(0.1, 0.1), scale=(0.9, 1.1)), ... py_vision.ToTensor()]) >>> # apply the transform to dataset through map function >>> image_folder_dataset = image_folder_dataset.map(operations=transforms_list, ... input_columns="image")