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,:])
|