使用 Albumentations 库进行随机裁剪时,如果图像和掩膜的尺寸不同,可以使用 albumentations.pytorch.transforms.ToTensorV2 转换函数将掩膜转换为与图像相同的尺寸。以下是一个示例代码:
import albumentations as A
import cv2
import numpy as np
# 定义随机裁剪的变换函数
transform = A.Compose([
A.RandomCrop(width=256, height=256),
A.HorizontalFlip(p=0.5),
# ...
])
# 读取图像和掩膜
image = cv2.imread('image.jpg')
mask = cv2.imread('mask.jpg', cv2.IMREAD_GRAYSCALE)
# 进行随机裁剪变换
data = {"image": image, "mask": mask}
data = transform(**data)
# 获取变换后的图像和掩膜
transformed_image = data["image"]
transformed_mask = data["mask"]
# 将掩膜转换为与图像相同的尺寸
transformed_mask = cv2.resize(transformed_mask, (transformed_image.shape[1], transformed_image.shape[0]))
# 打印转换后的图像和掩膜尺寸
print("Transformed image shape:", transformed_image.shape)
print("Transformed mask shape:", transformed_mask.shape)
在上面的示例中,RandomCrop 函数用于随机裁剪图像和掩膜。然后,使用 ToTensorV2 函数将掩膜转换为与图像相同的尺寸。最后,使用 cv2.resize 函数将掩膜调整为与图像相同的尺寸。