mindspore.dataset.vision.RandomCrop

View Source On Gitee
class mindspore.dataset.vision.RandomCrop(size, padding=None, pad_if_needed=False, fill_value=0, padding_mode=Border.CONSTANT)[source]

Crop the input image at a random location. If input image size is smaller than output size, input image will be padded before cropping.

Note

If the input image is more than one, then make sure that the image size is the same.

Parameters
  • size (Union[int, Sequence[int]]) – The output size of the cropped image. The size value(s) must be positive. If size is an integer, a square crop of size (size, size) is returned. If size is a sequence of length 2, an image of size (height, width) will be cropped.

  • padding (Union[int, Sequence[int]], optional) – The number of pixels to pad each border of the image. The padding value(s) must be non-negative. Default: None. If padding is not None, pad image first with padding values. If a single number is provided, pad all borders with this value. If a tuple or lists of 2 values are provided, pad the (left and right) with the first value and (top and bottom) with the second value. If 4 values are provided as a list or tuple, pad the left, top, right and bottom respectively.

  • pad_if_needed (bool, optional) – Pad the image if either side is smaller than the given output size. Default: False.

  • fill_value (Union[int, tuple[int]], optional) – The pixel intensity of the borders, only valid for padding_mode Border.CONSTANT. If it is a 3-tuple, it is used to fill R, G, B channels respectively. If it is an integer, it is used for all RGB channels. The fill_value values must be in range [0, 255]. Default: 0.

  • padding_mode (Border, optional) –

    The method of padding. Default: Border.CONSTANT. It can be any of Border.CONSTANT, Border.EDGE, Border.REFLECT, Border.SYMMETRIC.

    • Border.CONSTANT , means it fills the border with constant values.

    • Border.EDGE , means it pads with the last value on the edge.

    • Border.REFLECT , means it reflects the values on the edge omitting the last value of edge.

    • Border.SYMMETRIC , means it reflects the values on the edge repeating the last value of edge.

Raises
Supported Platforms:

CPU

Examples

>>> import numpy as np
>>> import mindspore.dataset as ds
>>> import mindspore.dataset.vision as vision
>>> from mindspore.dataset.vision import Border
>>>
>>> # Use the transform in dataset pipeline mode
>>> random_crop_op = vision.RandomCrop(64, [16, 16, 16, 16], padding_mode=Border.EDGE)
>>> transforms_list = [random_crop_op]
>>> data = np.random.randint(0, 255, size=(1, 100, 100, 3)).astype(np.uint8)
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["image"])
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms_list, input_columns=["image"])
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
...     print(item["image"].shape, item["image"].dtype)
...     break
(64, 64, 3) uint8
>>>
>>> # Use the transform in eager mode
>>> data = np.random.randint(0, 255, size=(100, 100, 3)).astype(np.uint8)
>>> output = vision.RandomCrop(8, [10, 10, 10, 10], padding_mode=Border.EDGE)(data)
>>> print(output.shape, output.dtype)
(8, 8, 3) uint8
Tutorial Examples: