CantonMonkey
add app files
4db3489
Raw
History Blame Contribute Delete
1.28 kB
from tensorflow import keras
import numpy as np
import cv2
import tensorflow as tf
class Classifier:
def __init__(self, modelPath):
self.model=tf.keras.models.load_model(modelPath)
self.imageSize=64
def get_prediction(self, imgCrop, hand):
# img input
imgResize=cv2.resize(imgCrop, (self.imageSize, self.imageSize))
img_normalized=imgResize/255.0
img_reshaped=np.reshape(img_normalized, (1, self.imageSize, self.imageSize, 3))
# coor input
landmarks=[]
for lm in hand["lmList"]:
coords=[lm[0]/64, lm[1]/64] # img size = 64*64, coor normalization
landmarks.extend(coords)
landmarks=np.array(landmarks).reshape(1, -1) # reshape as (1, 42)
# prediction by trained model
prediction=self.model.predict([img_reshaped, landmarks])
index=np.argmax(prediction)
probability=prediction[0][index]
labels={0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F', 6: 'G', 7: 'H', 8: 'I', 9: 'J',
10: 'K', 11: 'L', 12: 'M', 13: 'N', 14: 'O', 15: 'P', 16: 'Q', 17: 'R', 18: 'S',
19: 'T', 20: 'U', 21: 'V', 22: 'W', 23: 'X', 24: 'Y', 25: 'Z', 26: 'del', 27: 'space'}
return labels[index], probability