File size: 2,251 Bytes
df20613
beb3e34
b73b4e1
 
df20613
8cc7c1a
26b8b00
31b5ef1
 
 
 
 
 
 
 
 
8cc7c1a
 
 
 
 
26b8b00
 
 
697679e
c9c47ec
26b8b00
775fea9
 
42bc3b0
3d79c89
 
 
12ae958
 
26b8b00
b2b0a36
775fea9
fca50af
8015cdb
 
12ae958
5c5ba3a
12ae958
8015cdb
8cc7c1a
df5841e
 
 
 
 
 
 
 
 
beb3e34
854f030
12ae958
391663d
12ae958
3d79c89
033d883
12ae958
854f030
12ae958
854f030
12ae958
 
 
 
 
aca188e
12ae958
aca188e
12ae958
 
df5841e
12ae958
 
 
 
df5841e
b2b0a36
12ae958
 
 
 
 
 
 
 
 
033d883
037f4d1
12ae958
 
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import streamlit as st
from PIL import Image, ImageDraw

from streamlit_image_coordinates import streamlit_image_coordinates

import numpy as np

from datasets import load_dataset

ds = load_dataset("Circularmachines/batch_indexing_machine_100_small_imgs", split="train")






#st.set_page_config(
#    page_title="Streamlit Image Coordinates: Image Update",
#    page_icon="🎯",
#    layout="wide",
#)

#"# :dart: Streamlit Image Coordinates: Image Update"

if "points" not in st.session_state:
  st.session_state["points"] = (200,200)

if "img" not in st.session_state:
  st.session_state["img"] = 0

if "draw" not in st.session_state:
  st.session_state["draw"] = False

if "sideimg" not in st.session_state:
  st.session_state["sideimg"] = [0,1,2,3]

def button_click():
    st.session_state["img"]=np.random.randint(100)
    st.session_state["draw"] = False

def find():
  for i in range(4):
    st.session_state["sideimg"][i]+=1
 #   st.image(ds[0]['image'])


def get_ellipse_coords(point):# tuple[int, int]) -> tuple[int, int, int, int]):
    center = point
    radius = 16
    return (
        center[0] - radius,
        center[1] - radius,
        center[0] + radius,
        center[1] + radius,
    )


col1, col2 = st.columns(2)

with col1:

  current_image=ds[st.session_state["img"]]['image'].resize(size=(384,384))
  draw = ImageDraw.Draw(current_image)

  if st.session_state["draw"]:

  # Draw an ellipse at each coordinate in points
    #for point in st.session_state["points"]:
    point=st.session_state["points"]
    coords = get_ellipse_coords(point)
    draw.rectangle(coords, outline="green",width=2)

  value = streamlit_image_coordinates(current_image, key="pil")

  if value is not None:
      point = value["x"], value["y"]

      if point != st.session_state["points"]:
          st.session_state["points"]=point
          st.session_state["draw"]=True
          st.experimental_rerun()


  st.button('Random frame', on_click=button_click)
  st.button('Find simalar parts', on_click=find)

  st.write(st.session_state["img"])
  st.write(st.session_state["points"])
  st.write(st.session_state["draw"])

with col2:

  for i in range(3):
    st.image(np.array(ds[st.session_state["sideimg"][i]]['image'])[::4,::4,:])