Spaces:
Runtime error
Runtime error
| import cv2 | |
| from tensorflow.keras.models import load_model | |
| from PIL import Image | |
| import numpy as np | |
| import tensorflow as tf | |
| import streamlit as st | |
| import tempfile | |
| # Open the video file | |
| f = st.file_uploader("Choose a Video") | |
| if f is not None: | |
| # Read the video file from the file-like object | |
| tfile = tempfile.NamedTemporaryFile(delete=False) | |
| tfile.write(f.read()) | |
| # Opens the Video file | |
| cap= cv2.VideoCapture(tfile.name) | |
| # Get the frames per second (fps) of the video | |
| fps = (cap.get(cv2.CAP_PROP_FPS)) | |
| st.write(fps) | |
| # Calculate the interval to capture one frame per second | |
| interval = int(round(fps/1)) | |
| # Initialize a counter for frames | |
| frame_count = 0 | |
| model = tf.keras.models.load_model('HandSignClassifier (1).h5') | |
| array = ['a','b','c','d','e','f','g','h','i','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'] | |
| out = '' | |
| while True: | |
| # Read the next fram | |
| ret, frame = cap.read() | |
| # Break the loop if the video is over | |
| if not ret: | |
| break | |
| # Check if it's time to capture a frame | |
| if frame_count % interval == 0: | |
| frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Convert to grayscale | |
| frame = cv2.resize(frame, (28, 28)) # Resize to (28, 28) | |
| frame = np.reshape(frame, (1, 28, 28, 1)) | |
| st.image(frame, 'input')# Reshape | |
| pred = model.predict(frame) | |
| st.write(pred) | |
| pred = np.argmax(pred) | |
| pred = array[pred] | |
| if not out or out[-1] != pred: | |
| out = out + pred | |
| # Increment the frame counter | |
| frame_count += 1 | |
| # Release the video capture object | |
| cap.release() | |
| st.write(out) |