imgaug数据增强库实现图像增强代码

前言:

                 该数据增强库比较容易上手,我们读取的二维图像数据,记为images,images有四个维度,分别为(N,height,weidth,channels),即:图像数量,图像高度,图像宽度,图像的通道(RGB)。如果是灰度图的话,同样为四个维度,只是channels为1。数据必须是uint8类型,大小在0到255之间。对images中的图像数据进行增强如下:

import glob
import os
import cv2
from imgaug import augmenters as iaa
import imgaug as ia


all_images = glob.glob('C:/Users/tianr/Desktop/images/GreyPng/*.png')
#print(all_images)
for path in all_images:
    name = os.path.basename(path)[:-4]
    #print(name)
    images = cv2.imread(path,0)
    images = [images,images,images]
    #定义一个lambda表达式,以p=0.5的概率去执行sometimes传递的图像增强
    sometimes = lambda aug:iaa.Sometimes(0.5,aug)
    #建立一个名为seq的实例,定义增强方法,用于增强
    aug =iaa.Sequential(
        [
        iaa.Fliplr(0.5),# 对50%的图像进行镜像翻转
        iaa.Flipud(0.2),#对20%的图像做左右翻转
        sometimes(iaa.Crop(percent=(0, 0.1))),
        sometimes(iaa.Affine( # 部分图像做仿射变换
            scale = {'x':(0.8,1.2),'y':(0.8,1.2)},# 图像缩放为80%到120%
            translate_percent={'x':(-0.2,0.2),'y':(-0.2,0.2)},# 平移±20%
            rotate=(-30,30),# 旋转±30度
            shear=(-16,16),剪切变换±16度(矩形变平行四边形)
            cval=(0,255),# 全白全黑填充
            mode=ia.ALLL# 定义填充图像外区域的方法
        )),
        使用下面的0个到2个之间的方法增强图像
        iaa.SomeOf((0,2),
           [
            iaa.Sharpen(alpha=(0,0.3),lightness=(0.9,1.1)),#锐化处理
            # 加入高斯噪声
            iaa.AdditiveGaussianNoise(loc=0,scale=(0.0,0.05*255),per_channel=0.5),
            iaa.Add((-10,10),per_channel=0.5),# 每个像素随机加减-10到10之间的数
            iaa.Multiply((0.8,1.2),per_channel=0.5),# 像素乘上0.5或者1.5之间的数字
            # 将整个图像的对比度变为原来的一半或者二倍
            iaa.ContrastNormalization((0.5,2.0),per_channel=0.5),
            ],
           random_order=True)
        ],
    random_order=True # 随机的顺序把这些操作用在图像上
    )

    images_aug = aug.augment_images(images)# 应用数据增强
    n = 1
    for each in images_aug:
        #保存到指定路径
        cv2.imwrite('C:/Users/tianr/Desktop/images/AugImage/%s%s.png'%(name,n),each)
        n += 1
    # ia.imshow(np.hstack(images_aug))# 显示增强后的图像
import imgaug as ia
from imgaug import augmenters as iaa
import glob
import os
import cv2

image_data = glob.glob("C:/Users/tianr/Desktop/images/cat/*.jpg")
for path in image_data:
    name = os.path.basename(path)[:-4]
    all_images = cv2.imread(path, 1)
    images = [all_images]
    sometimes = lambda aug: iaa.Sometimes(0.5, aug)
    seq = iaa.Sequential(
        [
            # iaa.Fliplr(1.0),
            iaa.Flipud(0.5),
            # sometimes(iaa.Crop(percent=(0, 0.1))),
            # sometimes(iaa)
        ], random_order=False
    )

    images_aug = seq.augment_images(images)
    n = 1
    for each in images_aug:
        cv2.imwrite("C:/Users/tianr/Desktop/images/AugImage/%s%s.jpg" % (name, n), each)
        n += 1

 

你可能感兴趣的:(图像处理)