欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

imgaug的使用

程序员文章站 2024-03-19 22:18:34
...

1、安装

直接用pip install imgaug会报错,因为shapely没有找到,所以先要安装Shapely,直接pip也会报错,有可能会是:OSError: [WinError 126] 找不到指定的模块

解决办法是:

https://www.lfd.uci.edu/~gohlke/pythonlibs/

从连接中找到Shaply,下载对应自己python的版本

imgaug的使用

之后在文件的目录下,pip install 对应版本的.whl文件

之后

pip install git+https://github.com/aleju/imgaug #从github安装

或者
pip install imgaug

安装就绪之后就可使用

在使用过程中,可能会碰到numpy中找不到某些模块,我在使用时事bit_generate模块找不到,np.random.bit_generator,但是查看了numpy的代码,确实有这个模块,找不到问题所在,可能就是版本不对应,不太想在这里浪费太多时间,于是就

pip uninstall numpy

然后重新装了numpy就可以了。

2、使用

imgaug的说明文档:

https://imgaug.readthedocs.io/en/latest/source/examples_bounding_boxes.html

#标准用例
from imgaug import augmenters as iaa

seq = iaa.Sequential([
    iaa.Crop(px=(0, 16)), # 从图像的每条边随机裁剪0-16个像素
    iaa.Fliplr(0.5), # 将50%的图像进行水平翻转
    iaa.GaussianBlur(sigma=(0, 3.0)) # sigma0-3.0的高斯模糊
])

#一个batch读取1000张图片
for batch_idx in range(1000):
    # images格式是4D numpy array : (N, height, width, channels)(图像个数、高、宽、通道数)
    # 或者是3D numpy arrays: (height, width, channels).
    # 灰度图是 (height, width, 1) .
    # 所有images 数据必须是uint8类型,大小在0到255之间
    images = load_batch(batch_idx) #加载图片
    images_aug = seq(images=images) #对图片进行增强
    #train_on_images(images_aug)  #其他的一些对增强后的图片操作
#裁剪、仿射、模糊、噪声等处理


import numpy as np
import imgaug as ia
import imgaug.augmenters as iaa
import imageio
import cv2


ia.seed(1)


# 示例是array (32, 64, 64, 3) uint8类型的.
#ia.quokka:以numpy数组的形式返回quokka(无尾熊)的图像。
images = np.array(
    [ia.quokka(size=(64, 64)) for _ in range(32)],
    dtype=np.uint8
)



seq = iaa.Sequential([
    iaa.Fliplr(0.5), # 水平翻转
    iaa.Crop(percent=(0, 0.1)), # 随机裁剪,裁剪的大小是0-10%

    # 对50%的图像进行高斯模糊,sigma值为0-0.5
    iaa.Sometimes(0.5,
        iaa.GaussianBlur(sigma=(0, 0.5))
    ),

    # 增强或减弱每张图的对比度
    iaa.ContrastNormalization((0.75, 1.5)),

    # 增加高斯噪声
    # 对50%的图像,我们对每个像素进行一次噪声采样
    # 对剩余的50%的图像进行每个像素和通道的noise,这样的操作会改变每个像素的颜色(不仅仅是亮度)
    iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255), per_channel=0.5),

    # 将一些图像调亮,一些图像调暗
    # 对20%的图像,我们对每个通道multiply采样一次
    iaa.Multiply((0.8, 1.2), per_channel=0.2),

    # 将仿射变换应用于每个图像缩放、平移/移动、旋转和剪切。
    iaa.Affine(
        scale={"x": (0.8, 1.2), "y": (0.8, 1.2)},
        translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)},
        rotate=(-25, 25),
        shear=(-8, 8)
    )
], random_order=True) # 按随机顺序进行增强

images_aug = seq(images=images)