感覺很雞肋,也可能是我太菜get不到牛逼之處
讀起來快一點罷遼
當年一點注釋都沒寫,不愧是我
我恨你,半年前的我(……)
"""
Created on Tue Mar 10 19:00:17 2020
@author: ylylhl
Img2Npz
大約有些無用代碼的殘骸,懶得刪了
"""
import matplotlib.pyplot as plt
import numpy as np
import os
import cv2
import random
# 存放路徑,默認散裝
# 如果不是散裝而是分類好的,下面讀文件的時候改一下就行
train_path='./trainData/'
def readimg(path):
img=plt.imread(path)
if len(img.shape)!=2:
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
img=img / 255.0
return img
# 種類名:對應編號
# 最后預測出來的是編號
index = {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4,"5": 5,
"6": 6, "7": 7, "8": 8, "9": 9, "A": 10, "B": 11,
"C": 12, "D": 13, "E": 14, "F": 15, "H": 16,
"J": 17,"K": 18, "M": 19, "N": 20, "P": 21,
"Q": 22, "R": 23, "S": 24, "T": 25, "U": 26,"V": 27,
"W": 28, "X": 29, "Y": 30}
index_new = dict(zip(index.values(), index.keys()))
test_dataset,test_label=[],[]
train_dataset,train_label=[],[]
for i in os.listdir(train_path):
img=readimg(train_path+i)
# 獲取種類名
num=i[-5:-4].upper()
# 隨機分成訓練集和驗證集,比例隨緣
# 為什么寫的是test呢,因為我當時英語不好……寫作test讀作validation(。
if random.randint(1,80)<=10:
test_dataset.append(img)
test_label.append(index[num])
else:
train_dataset.append(img)
train_label.append(index[num])
train_dataset=np.array(train_dataset)
train_label=np.array(train_label)
test_dataset=np.array(test_dataset)
test_label=np.array(test_label)
np.savez('TrainData.npz',
train_dataset = train_dataset,
train_label = train_label,
test_dataset = test_dataset,
test_label = test_label)
讀的時候只需要
# 文件名
data = np.load('TrainData.npz')
test_labels=data['test_label']
train_labels=data['train_label']
#(48,60,1):原始圖像大小
test_images=data['test_dataset'].reshape(len(data['test_dataset']),48,60,1)
train_images=data['train_dataset'].reshape(len(data['train_dataset']),48,60,1)