#-------AI3.py

import cv2
import numpy as np
import matplotlib.pyplot as plt
import math
import random
import os 
from tensorflow.keras.preprocessing import image
from tensorflow.keras.optimizers import RMSprop
from tensorflow import keras
import tensorflow as tf
import shutil
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Dropout
from tensorflow.keras.utils import to_categorical
from sklearn.model_selection import train_test_split

# 指定亂數種子
seed = 7
np.random.seed(seed)

# read image
image_size=128
isz=image_size
def load_images_from_folder(folder,nfile):
    images = []; N=0
    afs=os.listdir(folder)
    afso=sorted(afs)
    for filename in afso:
        N+=1
        print(N,filename)
        img = cv2.imread(os.path.join(folder,filename), cv2.IMREAD_GRAYSCALE)
        if img is not None:
            img = cv2.resize(img,(isz,isz))/255
            images.append(img)
    return np.array(images[:nfile])


path='PNG'; ncat=9; nfile=80;
mod1='model_NUM9C80.h5'
ntest=15; pathT=path+'/S2/'
LAB=['1','2','3','4','5','6','7','8','9']

model = keras.models.load_model(mod1)
print('load ',mod1,' ... done')

# read images

test=load_images_from_folder(pathT,ntest)
print('load is done pathT=',pathT)
X_test=test
X_test=X_test.reshape(X_test.shape[0],isz,isz,1).astype("float32")
print('X_test:type,len,shape=',type(X_test),len(X_test),X_test.shape)
pred = np.argmax(model.predict(X_test),axis=1)      
print()
print('pred=',pred)
for i in range(ntest):
    img = X_test[i,:,:,0]
    print(i,'pred[i]=',pred[i],' LAB=',LAB[pred[i]])
    cv2.imshow('img',img)
    cv2.waitKey(0)

