首先要把对自己的数据进行处理:
文件名为load_img.py
# -*- coding: utf-8 -*-
import numpy as np
import os
from PIL import Image
def load_data(file_dir,nums):
j = 0
i = 0
A0 = 0
A1 = 0
A2 = 0
A3 = 0
# 从data里面选择前number张作为总数据
number = nums
# 分为4类,从每个类的数量里面取前validation_split * number个样本
number1 = int(nums/4)
data = np.empty((number, 224, 224, 3), dtype="float32")
label = np.empty((number,), dtype="uint8")
for file in os.listdir(file_dir):
for file1 in os.listdir(file_dir + '/' + file):
for file2 in os.listdir(file_dir + '/' + file + '/' + file1):
for file3 in os.listdir(file_dir + '/' + file + '/' + file1 + '/' + file2):
dir = file_dir + '/' + file + '/' + file1 + '/' + file2 + '/' + file3
if 'C.jpg' in file3:
# print(Image.open(dir))
try:
image = Image.open(dir)
except IOError:
print(dir)
print ("Error: 没有找到文件或读取文件失败")
else:
if i == number:
j = j + 1
else:
if A0 == number1:
j = j + 1
else:
if image.mode == 'RGB':
# print(dir)
img = Image.open(dir)
# img= img.convert('L') # 3通道图转化为单通道图
img = img.resize((224, 224), Image.ANTIALIAS)
arr = np.asarray(img, dtype="float32")
data[i, :, :, :] = arr
label[i] = int(0)
A0 = A0 + 1
i = i + 1
if i % 500 == 0:
print(i)
else:
j = j + 1
elif 'CB.jpg' in file3:
# print(Image.open(dir))
try:
image = Image.open(dir)
except IOError:
print(dir)
print("Error: 没有找到文件或读取文件失败")
else:
if i == number:
j = j + 1
else:
if A3 == number1:
j = j + 1
else:
if image.mode == 'RGB':
# print(dir)
img = Image.open(dir)
# img = img.convert('L') # 3通道图转化为单通道图
img = img.resize((224, 224), Image.ANTIALIAS)
arr = np.asarray(img, dtype="float32")
data[i, :, :, :] = arr
label[i] = int(3)
A3 = A3 + 1
i = i + 1
if i % 500 == 0:
print(i)
else:
j = j + 1
elif 'CA.jpg' in file3:
# print(Image.open(dir))
try:
image = Image.open(dir)
except IOError:
print(dir)
print ("Error: 没有找到文件或读取文件失败")
else:
if i == number:
j = j + 1
else:
if A1 == number1:
j = j + 1
else:
if image.mode == 'RGB':
# print(dir)
img = Image.open(dir)
# img = img.convert('L') # 3通道图转化为单通道图
img = img.resize((224, 224), Image.ANTIALIAS)
arr = np.asarray(img, dtype="float32")
data[i, :, :, :] = arr
label[i] = int(1)
A1 = A1 + 1
i = i + 1
if i % 500 == 0:
print(i)
else:
j = j + 1
elif ('C.jpg' not in file3) and ('CA.jpg' not in file3) and ('CB.jpg' not in file3) and (
'.jpg' in file3):
# print(Image.open(dir))
try:
image = Image.open(dir)
except IOError:
print(dir)
print ("Error: 没有找到文件或读取文件失败")
else:
if i == number:
j = j + 1