基于python做图片数据扩充

基于python的图片数据扩充

借鉴:https://blog.csdn.net/jdzwanghao/article/details/80861590

我的数据一共分为两个文件夹,放在E盘的picture下面,一个文件命名为“0”,代表0类;另一个命名为“1”,代表1类;

# 导入需要用到的库
from keras.preprocessing.image import ImageDataGenerator
from keras.preprocessing import image
import matplotlib.pyplot as plt
import os
import numpy as np
import cv2

# 指定参数
# rotation_range 旋转
# width_shift_range 左右平移
# height_shift_range 上下平移
# zoom_range 随即放大或缩小

# 定义图片生成器,我只用了旋转,大家如果需要平移或者缩放可以自己设置。
img_generator = ImageDataGenerator(rotation_range=90)
# ImageDataGenerator()中不设置参数就表示 不操作,后面生成batch就是直接在原数据集上抽取图片。

# 输入数据的准备
X = []
Y = []
for i in range(0, 2):
    # 遍历文件夹,读取图片
    for f in os.listdir("E://picture//%s" % i):
        # 读入每一个图片
        Images = cv2.imread("E://picture//%s//%s" % (i, f))
        # 缩放为长和宽为(256, 256)
        image = cv2.resize(Images, (256, 256), interpolation=cv2.INTER_CUBIC)  # interpolation是插值方法
        # 标准化
        image = np.array(image, np.float32) / 255
        X.append(image)
        Y.append(i)
# 将数据集转为数组
X = np.array(X)
Y = np.array(Y)
print(X.shape)
print(Y.shape)

# 生成图片:其中,gen可以作为生成器,用model.fit_generate(generate,)来训练。

# [生成图片]: 其中,gen可以作为生成器,用model.fit_generate(generate,)中来训练。
gen = img_generator.flow(X, Y, batch_size=1)   # 我理解的batch_size,就是每次生成batch_size张图片。

# 看看每个batch中生成的图片都是咋样的
x = []
y = []
plt.figure()
for i in range(1000):    # 迭代1000,生成1000个
    x_batch, y_batch = next(gen)  # 每次next()一下,返回一个batch: x_batch, y_batch

    x.append(x_batch)
    y.append(y_batch)

    print('\n')
    print('x_batch', x_batch)
    print('\n')
    print('x_batch.shape:', x_batch.__class__)
    print('\n')
    print('x_batch.shape:', x_batch.shape)
    print('\n')
    print('y_batch', y_batch)
    print('\n')

    # plt.imshow(x_batch[0])  # batch中的第一张图片
    # plt.show()
x = np.array(x)
y = np.array(y)
x = x.reshape(1000, 256, 256, 3)
y = y.reshape(1000)
# x是扩充的1000张图片,y是对应类别
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值