Newer
Older
import numpy as np
from cvzone.HandTrackingModule import HandDetector
from Func.ClassifierModule import Classifier
from Func.CloseProgram import Close
from Func.Helpers import *
offset = 20
size = 300
capture = cv2.VideoCapture(0)
detector = HandDetector(maxHands=1)
model_path = "Model/keras_model.h5"
label_path = "Model/labels.txt"
classifier = Classifier(model_path, label_path)
letters = GetLabels(label_path)
if not capture.isOpened():
print("Failed to open video capture.")
exit()
while True:
success, img = capture.read()
imgOutput = img.copy()
if not success:
print('can\'t read image')
break
hands, img = detector.findHands(img)
if hands:
hand = hands[0]
x, y, w, h = hand['bbox']
imgFixed = np.ones((size, size, 3), np.uint8)
imgCropped = img[y - offset:y + h + offset, x - offset:x + w + offset]
aspectRatio = h / w
if aspectRatio > 1:
CalculateWidth(size, h, w, imgCropped, imgFixed)
prediction, index = GetPrediction(classifier, imgFixed)
else:
CalculateHeight(size, h, w, imgCropped, imgFixed)
prediction, index = GetPrediction(classifier, imgFixed)
print('pred', prediction)
print('index', index)