如何在 imgaug 中为一张图像应用多个旋转值? (不是随机的)

How to apply mutliple rotate values for one image in imgaug? (Not randomly)

from imgaug import augmenters as iaa
from imgaug import parameters as iap

import cv2

aug=iaa.Affine(rotate=iap.DeterministicList([90,180,270]))


imglist = []

img = cv2.imread('i/1.jpg')

imglist.append(img)

images_aug = aug.augment_images(imglist)

cv2.imwrite('i/new.jpg', images_aug[0])

我有这段代码,想将我的 3 个旋转值 (90,180,270) 应用到图像。所以我的输出应该是 3 张图像(旋转了 90,180,270 个角度版本的图像)但是当我使用这段代码时,它会分配一个随机旋转值并给我一个旋转图像。

这就是你想要的:

from imgaug import augmenters as iaa
from imgaug import parameters as iap
import cv2

rotations = [90,180,270]
aug = iaa.Affine(rotate=iap.DeterministicList(rotations))
img = cv2.imread('i/1.jpg')
imglist = [img for i in range(len(rotations))]
images_aug = aug.augment_images(imglist)
for i in range(len(rotations)):
    cv2.imwrite('i/new_{}.jpg'.format(rotations[i]), images_aug[i])

变化是:

  • 我们有一个旋转数组,在整个代码中都会用到。这只是有助于缩短后续代码。
  • 我们在 imglist 中添加了足够的 imgs 来覆盖每个旋转。
  • 我们输出来自images_aug的每个图像。

最终结果: