import os
from PIL import Image
import numpy as np
"""
PIL 已经整合到 pillow中,需要安装pillow. 命令: pip install pillow
"""
image_width = 50
image_height = 100
def fetch_X_and_Y(data_path):
"""
基于给定的文件夹路径,加载手写汉字图片的数据
:param data_path:
:return:
"""
X, Y = [], []
# 获取子文件夹的名字
dirs = os.listdir(data_path)
print(dirs)
for dir_name in dirs:
# 将子文件夹的名字转为标签
label = int(dir_name)
# 构建子文件夹的路径
c_dir_path = os.path.join(data_path, dir_name)
print('加载文件夹:{}中的图像数据!!'.format(c_dir_path))
# 获取子文件夹中的图像文件的名字
images_name = os.listdir(c_dir_path)
# 遍历该子文件夹中的图像的文件名字
for image_name in images_name:
# 构造图像的路径
image_path = os.path.join(c_dir_path, image_name)
# 加载图片
img = Image.open(image_path)
# 将RGB图片 转为灰度图
img = img.convert('L')
# resize
img = img.resize((image_width, image_height))
# 转为numpy数据
img_arr = np.array(img).reshape(image_height, image_width, 1)
# 归一化
img_arr = img_arr / 255.0
# 追加到列表中
X.append(img_arr); Y.append(label)
# 将列表转换为numpy数据形式
X = np.asarray(X).astype(np.float32)
Y = np.asarray(Y).astype(np.float32)
return X, Y
train_x, train_y = fetch_X_and_Y(data_path='../datas/ChineseChar/train')
print(np.shape(train_x), np.shape(train_y))
val_x, val_y = fetch_X_and_Y(data_path='../datas/ChineseChar/valid')
print(np.shape(val_x), np.shape(val_y))
C:\ProgramData\Anaconda2\envs\py36\python.exe C:/Users/hjz/Work/AI/03_DL/02_demo/02-手写汉字数据的cnn项目/02_手写汉字数据的读取实现.py
['00000', '00001', '00002', '00003', '00004', '00005', '00006', '00007', '00008', '00009']
加载文件夹'./ChineseChar/train\00000'中的图像数据!!!
加载文件夹'./ChineseChar/train\00001'中的图像数据!!!
加载文件夹'./ChineseChar/train\00002'中的图像数据!!!
加载文件夹'./ChineseChar/train\00003'中的图像数据!!!
加载文件夹'./ChineseChar/train\00004'中的图像数据!!!
加载文件夹'./ChineseChar/train\00005'中的图像数据!!!
加载文件夹'./ChineseChar/train\00006'中的图像数据!!!
加载文件夹'./ChineseChar/train\00007'中的图像数据!!!
加载文件夹'./ChineseChar/train\00008'中的图像数据!!!
加载文件夹'./ChineseChar/train\00009'中的图像数据!!!
['00000', '00001', '00002', '00003', '00004', '00005', '00006', '00007', '00008', '00009']
加载文件夹'./ChineseChar/valid\00000'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00001'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00002'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00003'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00004'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00005'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00006'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00007'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00008'中的图像数据!!!
加载文件夹'./ChineseChar/valid\00009'中的图像数据!!!
数据加载完成,进行模型训练!
训练数据格式:(2381, 100, 50, 1) -- (2381,)
测试数据格式:(601, 100, 50, 1)
Process finished with exit code 0


2089

被折叠的 条评论
为什么被折叠?



