图像识别数据制作(1)
通过文件夹名字区分标签
import matplotlib
from sklearn.preprocessing import LabelBinarizer
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from imutils import paths
import numpy as np
import argparse
import random
import pickle
import cv2
import os
datapath = 'C:/Users/Administrator/Desktop/guanlu/small_data/train/'
print("[INFO] 开始读取数据")
data = []
labels = []
# 2 拿到图像数据路径,方便后续读取
imagePaths = sorted(list(paths.list_images(datapath)))
random.seed(42) #随机种子
random.shuffle(imagePaths) #洗牌操作
print('imagePaths:',imagePaths)
# 3 遍历读取数据
for imagePath in imagePaths:
# 3.1 读取图像数据,由于使用神经网络,需要给定成一维
image = cv2.imread(imagePath) #读取图像
image = cv2.resize(image, (32, 32)).flatten() #重新定义大小,并且进行flatten扁平化
data.append(image) #在data的末尾,追加image数据
# 3.2 读取标签
label = imagePath.split(os.path.sep)[-2][-1]
labels.append(label)
print(labels)
# 4 scale图像数据
data = np.array(data, dtype="float") / 255.0
labels = np.array(labels)
# 5 数据集切分
(trainX, testX, trainY, testY) = train_test_split(data,
labels, test_size=0.25, random_state=42)
# 6 转换标签,one-hot格式
lb = LabelBinarizer()
trainY = lb.fit_transform(trainY)
testY = lb.transform(testY)