Spaces:
No application file
No application file
| import os | |
| import cv2 | |
| import numpy as np | |
| from Classifier_ASL import Classifier | |
| from Hand_Tracking_ASL import HandDetector | |
| cap=cv2.VideoCapture(0) | |
| detector=HandDetector(maxHands=1) | |
| classifier=Classifier("best_model.h5") | |
| offset=20 | |
| def main(): | |
| while True: | |
| success, img=cap.read() | |
| hands, img=detector.findHands(img) | |
| # initialization for variables | |
| imgCrop=None | |
| pred_label="" | |
| pred_prob=0.0 | |
| if hands: | |
| hand=hands[0] | |
| x, y, w, h=hand['bbox'] | |
| imgHeight, imgWidth=img.shape[:2] | |
| y1=max(0, y-offset) | |
| y2=min(imgHeight, y+h+offset) | |
| x1=max(0, x-offset) | |
| x2=min(imgWidth, x+w+offset) | |
| imgCrop=img[y1:y2, x1:x2] | |
| if imgCrop.size!=0: # Check if the crop is not empty | |
| pred_label, pred_prob=classifier.get_prediction(imgCrop, hand) | |
| cv2.imshow("ImageCrop", imgCrop) | |
| large_img=np.zeros((600, 600, 3), dtype=np.uint8) | |
| center_y=large_img.shape[0]//2 | |
| center_x=large_img.shape[1]//2 | |
| top_y=center_y-imgCrop.shape[0]//2 | |
| top_x=center_x-imgCrop.shape[1]//2 | |
| large_img[top_y:top_y+imgCrop.shape[0], top_x:top_x+imgCrop.shape[1]]=imgCrop | |
| cv2.putText(large_img, f"Label: {pred_label}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) | |
| cv2.putText(large_img, f"Prob: {pred_prob:.2%}", (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) | |
| cv2.imshow("Larger Image", large_img) | |
| print(f'{pred_label}: {pred_prob:.2%}') | |
| cv2.putText(img, f"{pred_label}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) | |
| cv2.putText(img, f"{pred_prob:.2%}", (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) | |
| if cv2.waitKey(1)&0xFF==ord('q'): | |
| break | |
| cap.release() | |
| cv2.destroyAllWindows() | |
| if __name__=='__main__': | |
| main() |