Fashion-Search / app.py
Ajay-user's picture
Upload 2 files
9bdc63e
raw
history blame contribute delete
No virus
1.66 kB
import numpy as np
from PIL import Image, ImageOps
import streamlit as st
import requests
from utils import FashionSearch
fashion = FashionSearch()
st.title("Fashion Search")
sample_image_url = 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQgQrpNAmfVOPQ_3C2FBgEcfKjUiDf3qoKmgQ&usqp=CAU'
image = None
with st.sidebar:
tab_url, tab_upload, tab_cam = st.tabs(['URL', 'Upload', 'Camera'])
with tab_url:
image_url = st.text_input(
label="Enter the Image URL", value=sample_image_url, key='tab_url')
with tab_upload:
image_upload = st.file_uploader(
label='Upload the Image', type=['jpg', 'jpeg', 'png'], key='tab_upload')
with tab_cam:
image_webcam = st.camera_input(
label="😁 Simle for the camera πŸ“·", key='tab_cam')
if image_upload or image_webcam:
if image_webcam:
image = Image.open(image_webcam)
else:
image = Image.open(image_upload)
else:
try:
image = Image.open(requests.get(url=image_url, stream=True).raw)
st.image(image=ImageOps.scale(image, factor=0.2))
except:
st.warning("Please use a different URL 🌐", icon="⚠")
if image:
rows = [st.columns(4) for row in range(4)]
cols = [col for row in rows for col in row]
suggestions = fashion.find_k_neighbors(sample_img=image)
for col, id in zip(cols, suggestions):
img = Image.open(requests.get(fashion.image_link[int(id)], stream=True).raw)
col.image(img)
else:
st.info('Load an Image to get fashion suggestions', icon="πŸ€–")
# st.write(st.session_state)