我正在将两个包含图像的不同数据集合并成一个数据集。一个数据集在训练集中包含600张图像,另一个数据集仅包含90-100张图像。我想通过使用imgaug库来增加后一个数据集的大小。图像存储在以其类别命名的文件夹中。因此,训练集中“蛋糕”图像的路径将是..//images//Cake//cake_0001
。我尝试使用以下代码来增强这个数据集中的图像:
path = 'C:\\Users\\User\\Documents\\Dataset\\freiburg_groceries_dataset\\images'
ia.seed(6)
seq = iaa.Sequential([
iaa.Fliplr(0.5),
iaa.Crop(percent=(0, 0.1)),
iaa.Affine(rotate=(-25,25))
], random_order=True)
for folder in os.listdir(path):
try:
for i in os.listdir(folder):
img = imageio.imread(i)
img_aug = seq(images=img)
iaa.imshow(img_aug)
print(img_aug)
except:
pass
目前没有任何输出,即使我添加了print(img)
或imshow(img)
或其他任何内容。我如何确保为这个数据集获得更多图像?此外,增强图像的最佳位置在哪里?增强后的图像存储在哪里,我如何查看生成了多少新图像?
回答:
问题不够清晰。因此,对于问题2:保存文件时出错且无法使用imshow()进行可视化。
首先:在第二个循环代码块中
img = imageio.imread(i)
img_aug = seq(images=img)
iaa.imshow(img_aug)
print(img_aug)
第一个错误是:i
不是文件路径。为了解决这个问题,将imageio.imread(i)
替换为imageio.imread(path+'/'+folder+'/'+i)
。
第二个错误是:iaa没有imshow()属性
。为了修复这个问题,将iaa.imshow(img_aug)
替换为iaa.imgaug.imshow(img_aug)
。这样可以修复可视化错误并完成循环执行。
其次:如果在保存图像时遇到任何问题,可以使用PIL
,即:
from PIL import Image
im = Image.fromarray(img_aug)
im.save('img_aug.png')