Texture-Correct / app.py
Anustup's picture
Update app.py
f83d68f verified
import streamlit as st
from PIL import Image
import cv2
from texture_transfer import create_image_tile, create_layover, create_image_cutout, paste_image
from create_print_layover import create_image_with_feather_tile, control_texture
st.title("Texture Correction App")
if 'clicked' not in st.session_state:
st.session_state.clicked = False
def click_button():
st.session_state.clicked = True
with st.sidebar:
st.text("Play around this values")
choice = st.selectbox(
'what are you looking for?',
("Direct Texture", "Feathered Texture", "Direction Print"),
index=None,
placeholder="please choose an option"
)
overlap_width = st.slider("Overlap Width", min_value=0, max_value=100, step=1, value=50)
what_overlap = st.selectbox(
'how you want to overlap?',
('vertical', 'horizontal'),
index=None,
placeholder="please choose an option"
)
opacity = st.slider("Control opacity", min_value=0.0, max_value=1.0, value=1.0)
product, generated, texture_correct = st.columns(3)
with product:
st.header("Input product texture patch")
product_image = st.file_uploader("Patch of the Garment(Cut out an area from the garment)",
type=["png", "jpg", "jpeg"])
if product_image:
st.image(product_image)
with generated:
st.header("Input generated product Image & Mask")
generated_image = st.file_uploader("Generated Image", type=["png", "jpg", "jpeg"])
gen_image_mask = st.file_uploader("Generated Mask", type=["png", "jpg", "jpeg"])
if generated_image:
st.image(generated_image)
with texture_correct:
st.button("Texture Correct", on_click=click_button)
if st.session_state.clicked:
with st.spinner("Texture correcting🫡..."):
product_image_n = Image.open(generated_image)
product_image_dim = product_image_n.size
x_dim = product_image_dim[0]
y_dim = product_image_dim[1]
if choice == "Direct Texture":
create_image_tile(product_image, x_dim, y_dim)
elif choice == "Feathered Texture":
create_image_with_feather_tile(product_image, x_dim, y_dim, overlap_width)
elif choice == "Direction Print":
control_texture(product_image, what_overlap, overlap_width, x_dim, y_dim)
color_texture_image = cv2.imread('tiled_image_2.png')
resized_image = cv2.resize(color_texture_image, (x_dim, y_dim))
cv2.imwrite('tiled_image.png', resized_image)
overlay = create_layover(generated_image, 'tiled_image.png', opacity)
create_image_cutout('lay_over_image.png', gen_image_mask)
paste_image(generated_image, 'cut_out_image.png', gen_image_mask)
# st.image("tiled_image.png", caption="tiled_image.png")
# st.image("lay_over_image.png", caption="lay_over_image.png")
# st.image("cut_out_image.png", caption="cut_out_image.png")
st.image("result.png", caption="Texture Corrected Image", use_column_width=True)