def random_crop(image, crop_size, padding=None):
"""Randmly crop a image.
Args:
image: 3-D float Tensor of image
crop_size:int/tuple, output image height, width, for deep network we prefer same width and height
padding: int, padding use to restore original image size, padded with 0's
Returns:
3-D float Tensor of randomly flipped updown image used for training.
"""
if isinstance(crop_size, int):
crop_size = (crop_size, crop_size)
oshape = np.shape(image)
if padding:
oshape = (oshape[0] + 2 * padding, oshape[1] + 2 * padding)
npad = ((padding, padding), (padding, padding), (0, 0))
modified_image = image
if padding:
modified_image = np.lib.pad(
image, pad_width=npad, mode='constant', constant_values=0)
nh = random.randint(0, oshape[0] - crop_size[0])
nw = random.randint(0, oshape[1] - crop_size[1])
modified_image = modified_image[nh:nh + crop_size[0], nw:nw + crop_size[1]]
return modified_image
评论列表
文章目录