jpg_data_aug
# 用于数据扩充增强 具体使用时需要修改imread和imwrite路径
import imageio
import numpy as np
import imgaug as ia
from imgaug import augmenters as iaa # 引入数据增强的包
import cv2
import glob
from imgaug.augmentables.segmaps import SegmentationMapsOnImage
ia.seed(1)
image = cv2.imread("images\image30.jpg")
seq = iaa.Sequential(
[ # 建立一个名为seq的实例,定义增强方法,用于增强
iaa.Resize({"height": 1024, "width": 1284}),
iaa.Sequential(
[
iaa.Fliplr(0.5), # 水平翻转50%的图像
iaa.Flipud(0.5), # 垂直翻转50%的图像
iaa.Affine(scale=(0.5, 1.5)),
iaa.Affine(
rotate=(-45, 45),
shear=0,
# mode="constant",
# fit_output=True,
), # (-8, 8),
],
random_order=True,
),
# iaa.Sharpen(alpha=(0.0, 1.0), lightness=(0.75, 2.0)), #亮度在0.75-2.0之间,alpha在0.0-1.0之间的效果
iaa.ContrastNormalization((0.5, 1.5)), # 每幅图像随机抽样,将对比度标准化为0.5至1.5倍。
# iaa.Crop(px=(0, 16)), #对图像进行crop操作,随机在距离边缘的0到16像素中选择crop范围
iaa.Crop(percent=0.12),
# iaa.Fliplr(0.5), #对百分之五十的图像进行做左右翻转
iaa.GaussianBlur((0, 1.0)), # 在模型上使用0均值1方差进行高斯模糊
# iaa.Resize(size=[512, 642]),
# 用高斯模糊,均值模糊,中值模糊中的一种增强。注意OneOf的用法
iaa.OneOf(
[
iaa.GaussianBlur((0, 3.0)),
iaa.AverageBlur(k=(2, 7)), # 核大小2~7之间,k=((5, 7), (1, 3))时,核高度5~7,宽度1~3
iaa.MedianBlur(k=(3, 11)),
]
),
# 锐化处理
iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),
# 浮雕效果
iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)),
iaa.Resize({"height": 512, "width": 642}),
],
random_order=False,
)
images_aug = []
for _ in range(20):
images_aug_i = seq(image=image)
temp = []
temp.append(images_aug_i)
grid_image = ia.draw_grid(temp)
imageio.imwrite("images_aug_08/Image30_{}.jpg".format(_), grid_image)