import streamlit as st | |
from streamlit_webrtc import webrtc_streamer | |
import av | |
import cv2 | |
import time | |
import mediapipe as mp | |
import numpy as np | |
import pandas as pd | |
from mediapipe_functions import * | |
from utils import * | |
import tensorflow as tf | |
# st.title("Webcamera") | |
# st.write("Steps to use: \n1. Click on Start button.\n2. To stop the video when done, press Stop. \n\n The output will be displayed in about 40 secs.") | |
class VideoProcessor: | |
def __init__(self) -> None: | |
self.threshold1 = 100 | |
self.threshold2 = 200 | |
self.my_list = [] | |
def recv(self, frame): | |
img = frame.to_ndarray(format="bgr24") | |
self.my_list.append(img) | |
return av.VideoFrame.from_ndarray(img, format="bgr24") | |
# Create the video processor instance | |
video_processor = VideoProcessor() | |
ctx = webrtc_streamer(key="sample", video_processor_factory=lambda: video_processor) | |
# time.sleep(10) | |
# st.write(len(ctx.video_processor.my_list)) | |
# # Access the frames list after the webrtc_streamer function has finished running | |
# frames_list = ctx.video_processor.my_list | |
# # # Display the last frame | |
# # if frames_list: | |
# # st.image(frames_list[-1], channels="BGR") | |
# st.write("Running...") | |
# # Continuing with the code for inference pipeline | |
# final_landmarks = extract_landmarks(frames_list) | |
# df1 = pd.DataFrame(final_landmarks,columns=['x','y','z']) | |
# ROWS_PER_FRAME = 543 | |
# # Loading data | |
# st.write(len(frames_list)) | |
# test_df = load_relevant_data_subset(df1, ROWS_PER_FRAME=ROWS_PER_FRAME) | |
# test_df = tf.convert_to_tensor(test_df) | |
# # Inference | |
# interpreter = tf.lite.Interpreter("models/model.tflite") | |
# prediction_fn = interpreter.get_signature_runner("serving_default") | |
# output = prediction_fn(inputs=test_df) | |
# sign = np.argmax(output["outputs"]) | |
# sign_json=pd.read_json("sign_to_prediction_index_map.json",typ='series') | |
# sign_df=pd.DataFrame(sign_json) | |
# sign_df.iloc[sign] | |
# top_indices = np.argsort(output['outputs'])[::-1][:5] | |
# top_values = output['outputs'][top_indices] | |
# output_df = sign_df.iloc[top_indices] | |
# output_df['Value'] = top_values | |
# output_df.rename(columns = {0:'Index'}, inplace = True) | |
# st.write(output_df) | |
import streamlit as st | |
import time | |
# start = time.time() | |
# while(time.) | |
# picture = st.camera_input("Take a picture") | |
# if picture: | |
# st.image(picture) |