mindspore.dataset.vision.RandomAffine
- class mindspore.dataset.vision.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=Inter.NEAREST, fill_value=0)[源代码]
对输入图像应用随机仿射变换。
参数:
degrees (Union[int, float, sequence]) - 旋转度数的范围。 如果 degrees 是一个数字,它代表旋转范围是(-degrees, degrees)。 如果 degrees 是一个序列,它代表旋转是 (min, max)。
translate (sequence, 可选) - 一个序列(tx_min, tx_max, ty_min, ty_max)用于表示水平(tx)方向和垂直(ty)方向的最小/最大平移范围,取值范围 [-1.0, 1.0],默认值:None。 水平和垂直偏移分别从以下范围中随机选择:(tx_min*width, tx_max*width) 和 (ty_min*height, ty_max*height)。 如果 translate 是一个包含2个值的元组或列表,则 (translate[0], translate[1]) 表示水平(X)方向的随机平移范围。 如果 translate 是一个包含4个值的元组或列表,则 (translate[0], translate[1]) 表示水平(X)方向的随机平移范围,(translate[2], translate[3])表示垂直(Y)方向的随机平移范围。 如果为None,则不对图像进行任何平移。
scale (sequence, 可选) - 图像的比例因子的随机范围,必须为非负数,使用原始比例,默认值:None。
shear (Union[float, Sequence[float, float], Sequence[float, float, float, float]], 可选) - 图像的剪切因子的随机范围,必须为正数,默认值:None。 如果是数字,则应用在 (-shear, +shear) 范围内平行于 X 轴的剪切。 如果 shear 是一个包含2个值的元组或列表,则在 (shear[0],shear[1]) 范围内进行水平(X)方向的剪切变换。 如果 shear 是一个包含4个值的元组或列表,则在 (shear[0],shear[1]) 范围内进行水平(X)方向的剪切变换,并在(shear[2], shear[3])范围内进行垂直(Y)方向的剪切变换。 如果为None,则不应用任何剪切。
resample (Inter, 可选) - 图像插值方式。它可以是 [Inter.BILINEAR、Inter.NEAREST、Inter.BICUBIC、Inter.AREA] 中的任何一个,默认值:Inter.NEAREST。
Inter.BILINEAR: 双线性插值。
Inter.NEAREST: 最近邻插值。
Inter.BICUBIC: 双三次插值。
Inter.AREA: 像素区域插值。
fill_value (Union[int, tuple[int]], 可选) - 用于填充输出图像中变换之外的区域。元组中必须有三个值,取值范围是[0, 255],默认值:0。
异常:
TypeError - 如果 degrees 不是int、float或sequence类型。
TypeError - 如果 translate 不是sequence类型。
TypeError - 如果 scale 不是sequence类型。
TypeError - 如果 shear 不是int、float或sequence类型。
TypeError - 如果 resample 不是
mindspore.dataset.vision.Inter
的类型。TypeError - 如果 fill_value 不是int或tuple[int]类型。
ValueError - 如果 degrees 为负数。
ValueError - 如果 translate 不在范围 [-1.0, 1.0] 内。
ValueError - 如果 scale 为负数。
ValueError - 如果 shear 不是正数。
RuntimeError - 如果输入图像的shape不是 <H, W> 或 <H, W, C>。
- 支持平台:
CPU
样例:
>>> from mindspore.dataset.vision import Inter >>> decode_op = vision.Decode() >>> random_affine_op = vision.RandomAffine(degrees=15, ... translate=(-0.1, 0.1, 0, 0), ... scale=(0.9, 1.1), ... resample=Inter.NEAREST) >>> transforms_list = [decode_op, random_affine_op] >>> image_folder_dataset = image_folder_dataset.map(operations=transforms_list, ... input_columns=["image"])