File size: 2,177 Bytes
57d7ed3
 
9acc552
57d7ed3
 
 
 
 
9acc552
 
 
99cd14f
 
 
 
 
 
 
9acc552
57d7ed3
 
 
 
 
99cd14f
 
9acc552
57d7ed3
f0adec0
99cd14f
f0adec0
 
99cd14f
 
f0adec0
99cd14f
 
 
57d7ed3
99cd14f
3733e70
0f2d9f6
57d7ed3
9acc552
57d7ed3
 
99cd14f
 
 
 
 
 
 
 
9acc552
5f721d1
57d7ed3
 
 
99cd14f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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,
    set_sidebar_info,
)

import_registered_modules()


def main():
    cols = set_page_info()
    uploaded_file, pupil_selection, tv_model, blink_detection = set_sidebar_info()

    if uploaded_file is not None:
        file_extension = uploaded_file.name.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"):
        if uploaded_file is None:
            st.sidebar.error("Please 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