import numpy as np
import random
import matplotlib.pyplot as plt
from PIL import Image
1.需要导入的包
for n in range(4600):
# input_data用来保存所有faces图片的路径
data_path=r'C:\Users\Administrator\Desktop\dataset\faces-resize-gray\{}.jpg'.format(n+1)
input_data.append(data_path)
``
`
2.创建一个数组保存所有图片的路径信息
def faces_batch(input_data):
random.shuffle(input_data)
train_data保存图像数据
train_data=np.empty((BATCH_SIZE,IMAGE_SIZE,IMAGE_SIZE))
随机返回batch个图像的路径
random_path=[]
random_path=random.sample(input_data,BATCH_SIZE)
3.首先random.shuffle就地打乱列表,再随机从列表中返回十个图片的地址,
for i in range(BATCH_SIZE):
读取随即返回的batch个路径对应的picture,并保存到一个第一维为batch大小的数组
image=Image.open(random_path[i])
图像随机左右翻转
if random.randint(1,11) >random.randint(1,10):
image = image.transpose(Image.FLIP_LEFT_RIGHT)
img_ndarray=np.asarray(image,dtype='float64')
4.前面设置为randint(1,11),后面为(1,10)保证了图片被水平翻转的概率为0.5
图像明度,对比度随机调整
gamma=random.randint(-30,30)
a=random.uniform(0.85,1.3)
img_brightness=a*img_ndarray + gamma
5.gamma值调整亮度
a值调整对比度
图像归一化处理
mean=np.sum(img_brightness)/4096
std=np.std(img_ndarray)
standard_img=(img_brightness-mean)/std
train_data[i]=standard_img
train_data = train_data.astype('float32')
return train_data
6.np.sum()/(imgsize*imgsize)求出像素均值
np.std求出标准差