File size: 2,588 Bytes
df20613 beb3e34 b73b4e1 df20613 8cc7c1a 26b8b00 31b5ef1 8797870 775cb18 31b5ef1 8cc7c1a 26b8b00 faf8b4b 26b8b00 775fea9 42bc3b0 3d79c89 12ae958 26b8b00 b2b0a36 775fea9 fca50af 8015cdb faf8b4b 458490b cc301d6 d944227 cc301d6 faf8b4b 12ae958 8015cdb 8cc7c1a df5841e de70cb6 df5841e e86e66f de70cb6 df5841e beb3e34 854f030 aa4905a 391663d 12ae958 3d79c89 fe0838a 12ae958 854f030 12ae958 854f030 12ae958 faf8b4b 12ae958 aca188e 12ae958 aca188e 12ae958 de70cb6 df5841e faf8b4b 12ae958 df5841e e2813d1 5ff37df e2813d1 12ae958 faf8b4b 12ae958 033d883 3df94f0 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 97 98 99 100 101 102 103 104 105 106 |
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")
pred=np.load('pred.npy')
keep_bool=np.load('keep_bool.npy')
#st.set_page_config(
# page_title="Streamlit Image Coordinates: Image Update",
# page_icon="🎯",
# layout="wide",
#)
#"# :dart: Streamlit Image Coordinates: Image Update"
if "point" not in st.session_state:
st.session_state["point"] = (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():
point=st.session_state["point"]
point=(point[0]//16,point[1]//16)
#point=point[0]*36+point[1]
st.write(point)
st.write(keep_bool[point[0],point[1]])
# 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
patch_size = 16
return (
center[0] ,
center[1] ,
center[0] + patch_size,
center[1] + patch_size,
)
col1, col2 = st.columns([5,1])
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["point"]
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"]//16*16, value["y"]//16*16
if point != st.session_state["point"]:
st.session_state["point"]=point
st.session_state["draw"]=True
st.experimental_rerun()
#subcol1, subcol2 = st.columns(2)
#with subcol1:
#st.button('Previous Frame', on_click=button_click)
st.button('Change Batch', on_click=button_click)
st.button('Find similar parts', on_click=find)
st.write(st.session_state["img"])
st.write(st.session_state["point"])
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,:])
|