import sys import os.path as osp import streamlit as st root_path = osp.abspath(osp.join(__file__, osp.pardir)) sys.path.append(root_path) from registry_utils import import_registered_modules from app_utils import ( is_image, is_video, process_image_and_vizualize_data, process_video_and_visualize_data, set_frames_processed_count_placeholder, set_input_image_on_ui, set_input_video_on_ui, set_page_info_and_sidebar_info, ) import_registered_modules() def main(): cols, video_path, uploaded_file, pupil_selection, tv_model, blink_detection = set_page_info_and_sidebar_info() if uploaded_file is not None: try: file_extension = uploaded_file.name.split(".")[-1] except Exception: file_extension = video_path.split(".")[-1] st.session_state["file_extension"] = file_extension if is_image(file_extension): input_img = set_input_image_on_ui(uploaded_file, cols) st.session_state["input_img"] = input_img elif is_video(file_extension): video_frames, video_path = set_input_video_on_ui(uploaded_file, cols) st.session_state["video_frames"] = video_frames st.session_state["video_path"] = video_path set_frames_processed_count_placeholder(cols) if st.sidebar.button("Predict Diameter & Compute CAM", type="primary"): if uploaded_file is None: st.sidebar.error("Please select / upload an image or video") else: with st.spinner("Analyzing..."): if is_image(st.session_state.get("file_extension")): input_img = st.session_state.get("input_img") process_image_and_vizualize_data(cols, input_img, tv_model, pupil_selection, blink_detection) elif is_video(st.session_state.get("file_extension")): video_frames = st.session_state.get("video_frames") video_path = st.session_state.get("video_path") process_video_and_visualize_data( cols, video_frames, tv_model, pupil_selection, blink_detection, video_path ) if __name__ == "__main__": main() # run: streamlit run app.py --server.enableXsrfProtection false