import torchvision.transforms.functional as TF
import random
from torchvision.transforms import transforms as tfs
defrand_crop(data,label,height,width):
h,w,_=data.shape
top=random.randint(0,h-height)
left=random.randint(0,w-width)
data=data[top:top+height,left:left+width]
label=label[top:top+height,left:left+width]return data,label
2.代码2
import torchvision.transforms.functional as TF
classMyDataset(Dataset):def__init__(self, image_paths, target_paths, train=True):
self.image_paths = image_paths
self.target_paths = target_paths
deftransform(self, image, mask):# Resize
resize = transforms.Resize(size=(520,520))
image = resize(image)
mask = resize(mask)# Random crop
i, j, h, w = transforms.RandomCrop.get_params(
image, output_size=(512,512))
image = TF.crop(image, i, j, h, w)
mask = TF.crop(mask, i, j, h, w)# Random horizontal flippingif random.random()>0.5:
image = TF.hflip(image)
mask = TF.hflip(mask)# Random vertical flippingif random.random()>0.5:
image = TF.vflip(image)
mask = TF.vflip(mask)# Transform to tensor
image = TF.to_tensor(image)
mask = TF.to_tensor(mask)return image, mask
def__getitem__(self, index):
image = Image.open(self.image_paths[index])
mask = Image.open(self.target_paths[index])
x, y = self.transform(image, mask)return x, y
def__len__(self):returnlen(self.image_paths)
3.代码3
from torchvision.transforms import transforms as tfs
defrand_crop(data, label, height, width):
crop_size=[height,width]
i, j, h, w = tfs.RandomCrop.get_params(data, output_size=crop_size)
data = TF.crop(data, i, j, h, w)
label = TF.crop(label, i, j, h, w)return data, label
4.代码4
from mxnet import gluon, image
defrand_crop(data, label, height, width):'''
# data is PIL.Image object
# label is PIL.Image object
# '''
data=mxnet.nd.array(data)
label=mxnet.nd.array(label)
data, rect =image.random_crop(data,(width, height))
label = image.fixed_crop(label,*rect)
data=data.asnumpy()
label=label.asnumpy()#return data, label