如何在imgaug中为单张图片应用多个非随机固定旋转值
问题解决方法
问题根源
你当前代码中iap.DeterministicList([90,180,270])的逻辑是:为输入图像列表中的每一张图,依次从列表中取一个旋转参数应用。你仅传入了1张原图,所以只会得到1张应用了第一个角度(90度)的处理结果。
实现方案
方案1:传入3份原图副本,批量处理
该方案效率更高,适合后续扩展批量处理多图场景:
from imgaug import augmenters as iaa from imgaug import parameters as iap import cv2 aug = iaa.Affine(rotate=iap.DeterministicList([90,180,270])) img = cv2.imread('i/1.jpg') # 构造包含3份相同原图的列表,对应3个旋转角度 imglist = [img] * 3 images_aug = aug.augment_images(imglist) # 分别保存3张旋转后的图片 for idx, rotated_img in enumerate(images_aug): cv2.imwrite(f'i/new_rotate_{90*(idx+1)}.jpg', rotated_img)
方案2:循环遍历角度单独处理
逻辑更直白,可读性更强:
from imgaug import augmenters as iaa import cv2 img = cv2.imread('i/1.jpg') rotate_angles = [90, 180, 270] for angle in rotate_angles: # 每次指定固定角度构造增强器 aug = iaa.Affine(rotate=angle) rotated_img = aug.augment_image(img) cv2.imwrite(f'i/new_rotate_{angle}.jpg', rotated_img)
内容的提问来源于stack exchange,提问作者efc07
相关产品推荐
相关产品推荐

