import cv2 import numpy as np import streamlit as st from PIL import Image import streamlit_image_coordinates def main(): prev_val = None st.title("PySeek") st.sidebar.title("Upload Image") # File uploader widget uploaded_file = st.sidebar.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"]) new_img = uploaded_file.name if uploaded_file is not None else None # print(uploaded_file.file_id) if uploaded_file is not None: if uploaded_file.file_id not in st.session_state: st.session_state[uploaded_file.file_id] = [] # Open and display the image image = Image.open(uploaded_file) img = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR) # st.image(image, caption='Uploaded Image', use_column_width=True) value = streamlit_image_coordinates.streamlit_image_coordinates( # Image.open(uploaded_file), img, key="pil", ) if value is not None and value != prev_val: prev_val = value st.session_state[uploaded_file.file_id].append((value['x'], value['y'])) if uploaded_file.file_id in st.session_state: for val in st.session_state[uploaded_file.file_id]: st.write(f"x: {val[0]}, y: {val[1]}") if __name__ == "__main__": main()