paulokewunmi commited on
Commit
85e80c1
1 Parent(s): a5c75e7

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +97 -0
app.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ import sys
4
+
5
+ sys.path.insert(0, "image_search_engine")
6
+
7
+
8
+ from image_search_engine import utils
9
+ from image_search_engine.product_image_search import JumiaProductSearch
10
+ from PIL import Image, ImageOps
11
+
12
+ import requests
13
+ from streamlit_image_select import image_select
14
+
15
+ jumia = JumiaProductSearch()
16
+
17
+
18
+ def get_search_results(query):
19
+ res = jumia.search(query, 9)
20
+
21
+ images, names, urls = [], [], []
22
+
23
+ for i, record in enumerate(res["matches"]):
24
+ metadata = record["metadata"]
25
+ images.append(metadata["product_image_url"])
26
+ names.append(metadata["product_name"])
27
+ urls.append(metadata["product_url"])
28
+
29
+ return images, names, urls
30
+
31
+
32
+ banner_img = Image.open(utils.PACKAGE_DIR.parent / "jumia_lens.png")
33
+ st.image(banner_img)
34
+
35
+
36
+ input_options = st.radio("Select Input Option", ("image upload", "use example images"))
37
+
38
+ img = None
39
+
40
+ if input_options == "image upload":
41
+ img = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"])
42
+
43
+
44
+ else:
45
+ with st.expander(label="Chose sample image", expanded=False):
46
+ img = image_select(
47
+ label="Use example image",
48
+ images=[
49
+ "https://ng.jumia.is/unsafe/fit-in/500x500/filters:fill(white)/product/88/3305912/1.jpg?5807",
50
+ "https://ng.jumia.is/unsafe/fit-in/500x500/filters:fill(white)/product/74/0464341/1.jpg?7325",
51
+ "https://watchlocker.ng/wp-content/uploads/2021/04/JY8085-14H.jpg",
52
+ "https://www-konga-com-res.cloudinary.com/w_auto,f_auto,fl_lossy,dpr_auto,q_auto/media/catalog/product/M/L/196920_1641394875.jpg",
53
+ "https://www-konga-com-res.cloudinary.com/w_auto,f_auto,fl_lossy,dpr_auto,q_auto/media/catalog/product/I/K/154983_1595624114.jpg",
54
+ "https://ng.jumia.is/unsafe/fit-in/500x500/filters:fill(white)/product/73/3254702/1.jpg?5592",
55
+ "https://store.storeimages.cdn-apple.com/4668/as-images.apple.com/is/MKUQ3_VW_34FR+watch-44-alum-midnight-cell-se_VW_34FR_WF_CO_GEO_AE?wid=1400&hei=1400&trim=1%2C0&fmt=p-jpg&qlt=95&.v=1683237043713",
56
+ "https://ng.jumia.is/unsafe/fit-in/500x500/filters:fill(white)/product/71/6579011/1.jpg?5730",
57
+ ],
58
+ )
59
+
60
+
61
+ if img:
62
+ if isinstance(img, str):
63
+ image = Image.open(requests.get(img, stream=True).raw)
64
+ else:
65
+ image = Image.open(img)
66
+
67
+ image = ImageOps.exif_transpose(image)
68
+
69
+ with st.columns(3)[1]:
70
+ st.markdown("### Query Image.")
71
+ st.image(image)
72
+
73
+ n = 3
74
+ product_images, product_names, product_urls = get_search_results(image)
75
+
76
+ for i, col in enumerate(st.columns(n)):
77
+ positions = (i, i + 3, i + 6)
78
+ names = [product_names[i] for i in positions]
79
+ images = [product_images[i] for i in positions]
80
+ urls = [product_urls[i] for i in positions]
81
+
82
+ with col:
83
+ st.write(names[0])
84
+ st.image(images[0])
85
+ st.write(urls[0])
86
+
87
+ st.write(names[1])
88
+ st.image(images[1])
89
+ st.write(urls[1])
90
+
91
+ st.write(names[2])
92
+ st.image(images[2])
93
+ st.write(urls[2])
94
+
95
+ # st.write(names[3])
96
+ # st.image(images[3])
97
+ # st.write(urls[3])