imgaug测试记录
第一部分——imgaug介绍
一、imgaug操作大致流程
imgaug是图像数据增强的一个库,其操作的大致流程为:定义图像变换方法(seq = iaa.Sequential)----->读取图像----->执行图像变换(seq.augment_images)----->保存图像
二、安装及代码使用
1.安装
pip install imgaug
2.对应github地址
https://github.com/aleju/imgaug
可以看到在该github库中,包含大量的数据增强方法,和部分演示示例。
3.使用代码
import cv2
import numpy as np
import imgaug.augmenters as iaa
# 定义数据增强方法
seq = iaa.Sequential([
###------可能用的上的数据增强方法-------###
###------可能用的上的数据增强方法-------###
#iaa.Dropout([0.05, 0.1]), # drop 5% or 10% of all pixel黑白填充
#iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),#锐化处理
#iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5),# 将整个图像的对比度变为原来的一半或者二倍
#iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255), per_channel=0.5),#加入高斯噪声
#iaa.Superpixels(p_replace=(0, 1.0),n_segments=(20, 100)),#超像素处理
#iaa.Fliplr(0.5), # 对图像进行水平翻转
#iaa.Flipud(0.5), # 对图像做上下翻转
#iaa.MotionBlur(k=15),#运动模糊
#iaa.KMeansColorQuantization(n_colors=64),#将颜色用kmeans量化为64种
#iaa.GammaContrast((0.5, 2.0)),#伽玛对比度
#iaa.GammaContrast((0.5, 2.0), per_channel=True),#
#iaa.SigmoidContrast(gain=(3, 10), cutoff=(0.4, 0.6)),#Sigmoid 对比
#iaa.AllChannelsCLAHE(),#AllChannelsCLAHE
#iaa.HistogramEqualization(),#直方图均衡化
#iaa.Alpha((0.0, 1.0), iaa.HistogramEqualization()),#alpha 混合直方图均衡化
iaa.imgcorruptlike.Snow(severity=2),#下雨效果
#iaa.imgcorruptlike.GlassBlur(severity=2),#毛玻璃效果
#iaa.imgcorruptlike.ElasticTransform(severity=2),#弹性变换
#iaa.Clouds(),#云雾
#iaa.Fog()#多雾
])
images = cv2.imread("base.jpeg")
img=np.array(images)
images=img.reshape(1,images.shape[0],images.shape[1],images.shape[2])
images_aug = seq.augment_images(images) #实现图像增强
cv2.imwrite("new21.jpg",images_aug[0])
代码主要包括定义数据增强方法,读入图像,数据增强和保存图像四步。
4.批量处理
import cv2
import numpy as np
import imgaug.augmenters as iaa
import os.path
import os
# 定义数据增强方法
seq = iaa.Sequential([
###------可能用的上的数据增强方法-------###
#iaa.Dropout([0.05, 0.1]), # drop 5% or 10% of all pixel黑白填充
#iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),#锐化处理
#iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5),# 将整个图像的对比度变为原来的一半或者二倍
#iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255), per_channel=0.5),#加入高斯噪声
#iaa.Superpixels(p_replace=(0, 1.0),n_segments=(20, 100)),#超像素处理
#iaa.Fliplr(0.5), # 对图像进行水平翻转
iaa.Flipud(0.5), # 对图像做上下翻转
#iaa.MotionBlur(k=15),#运动模糊
#iaa.KMeansColorQuantization(n_colors=64),#将颜色用kmeans量化为64种
#iaa.GammaContrast((0.5, 2.0)),#伽玛对比度
#iaa.GammaContrast((0.5, 2.0), per_channel=True),#
#iaa.SigmoidContrast(gain=(3, 10), cutoff=(0.4, 0.6)),#Sigmoid 对比
#iaa.AllChannelsCLAHE(),#AllChannelsCLAHE
#iaa.HistogramEqualization(),#直方图均衡化
#iaa.Alpha((0.0, 1.0), iaa.HistogramEqualization()),#alpha 混合直方图均衡化
#iaa.imgcorruptlike.Snow(severity=2),#下雨效果
#iaa.imgcorruptlike.GlassBlur(severity=2),#毛玻璃效果
#iaa.imgcorruptlike.ElasticTransform(severity=2),#弹性变换
#iaa.Clouds(),#云雾
#iaa.Fog()#多雾
])
if __name__ == '__main__':
img_dir = '/home/jun/work/imgaug/img/'
imgaugsave = '/home/jun/work/imgaug/imgout'
for img0 in os.listdir(img_dir):
nameinit=os.path.splitext(img0)[0]
imgpath = img_dir+os.sep+img0
images = cv2.imread(imgpath)
img=np.array(images)
images=img.reshape(1,images.shape[0],images.shape[1],images.shape[2])
images_aug = seq.augment_images(images) #实现图像增强
cv2.imwrite(imgaugsave+'/'+nameinit+'.jpg',images_aug[0])
'''
images = cv2.imread("add1img54.jpg")
img=np.array(images)
images=img.reshape(1,images.shape[0],images.shape[1],images.shape[2])
images_aug = seq.augment_images(images) #实现图像增强
cv2.imwrite("new22.jpg",images_aug[0])
'''
第二部分——数据增强方法及效果
对应的文档:https://imgaug.readthedocs.io/en/latest/source/examples_bounding_boxes.html
只需要对于修改seq = iaa.Sequential中iaa.的信息,即可定义数据增强方法。