import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, Callback, TensorBoard
import pathlib
import time
import os
import cv2
import random
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
gpu_ok = tf.test.is_gpu_available()
print("tf version:", tf.__version__)
print("use GPU", gpu_ok)
vaildpath = "testdata"
outppath = "result"
modelpath = "model/chepai-12-0.04.h5"
size =(96,96)
labelchar = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
def listdir(top_dir, type='image'):
tmp_file_lists = os.listdir(top_dir)
file_lists = []
if type == 'image':
for e in tmp_file_lists:
if e.endswith('.jpg') or e.endswith('.png') or e.endswith('.bmp') or e.endswith('.JPG'):
file_lists.append(e)
elif type == 'dir':
for e in tmp_file_lists:
if os.path.isdir(top_dir + e):
file_lists.append(e)
else:
raise Exception('Unknown type in listdir')
return file_lists
def check_parameter(param, param_type, create_new_if_missing=False):
assert param_type == 'file' or param_type == 'directory'
if param_type == 'file':
assert os.path.exists(param)
assert os.path.isfile(param)
else:
if create_new_if_missing is True:
if not os.path.exists(param):
os.makedirs(param)
else:
assert os.path.isdir(param)
else:
assert os.path.exists(param)
assert os.path.isdir(param)
def CreatResultDir(Onelevel,Twolevel):
if not os.path.exists(Onelevel):
os.makedirs(Onelevel)
for n ,label in enumerate(Twolevel):
labpath = '%s/%s'%(Onelevel,label)
if not os.path.exists(labpath):
os.makedirs(labpath)
fpath = pathlib.Path(Onelevel)
listall = list(fpath.glob("*"))
listdir = [str(path) for path in listall]
return listdir
#random.shuffle(all_image_paths)
#label_names = sorted(item.name for item in data_root.glob("*/") if item.is_dir())
def reprocessimage(img,size):
resizeimg = cv2.resize(img,size)
image = resizeimg/255.0
image = 2*image-1
return image
def main():
model = tf.keras.models.load_model(modelpath)
print(CreatResultDir(outppath,labelchar))
print("model load ready , and folder created ok")
libDir = os.path.abspath(vaildpath)
t = time.time()
for root, dirs, files in os.walk(libDir):
imglist = listdir(root, type='image')
print("test image number :{}".format(len(imglist)))
lasttime =time.time()
for n in range(len(imglist)):
img = cv2.imread(os.path.join(root,imglist[n]))
if img is None:
print("*********:{} is empty *********".format(imagelist[n]))
continue
outimage = reprocessimage(img,size)
out = np.argmax(model.predict(np.expand_dims(outimage, axis=0),batch_size=1))
wrpath = os.path.join(outppath,labelchar[out],imglist[n])
cv2.imwrite(wrpath,img)
if n%50==0:
bashtime= time.time()
print("now process number :{},with {} left,processing 50 using time :{}s".format(n,len(imglist)-n,bashtime-lasttime))
lasttime=bashtime
t2=time.time()
print("OK -----process image is {},all using time :{}s".format(len(imglist),t2-t))
if __name__=="__main__":
main()
09-10
2418
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
01-06
1993
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)