lpedro commited on
Commit
aabba7a
·
1 Parent(s): ab46a70
Files changed (2) hide show
  1. models.py +1 -1
  2. similarity.py +11 -5
models.py CHANGED
@@ -5,7 +5,7 @@ class RequestModel(BaseModel):
5
  originId: int
6
  sequence: int
7
  assetCode: str
8
- sourceUrl: str
9
 
10
 
11
  class ResponseModel(BaseModel):
 
5
  originId: int
6
  sequence: int
7
  assetCode: str
8
+ source: str
9
 
10
 
11
  class ResponseModel(BaseModel):
similarity.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  from typing import List
2
  from skimage.metrics import structural_similarity as ssim
3
  import cv2
@@ -8,9 +10,13 @@ from PIL import Image
8
  from models import RequestModel, ResponseModel
9
 
10
 
11
- def load_image_url(url):
12
- print(f'downloading.. {url}')
13
- img = Image.open(requests.get(url, stream=True).raw)
 
 
 
 
14
  img = np.array(img.convert('L'))
15
  return img
16
 
@@ -18,13 +24,13 @@ def load_image_url(url):
18
  def check_similarity(images: List[RequestModel]):
19
  print(f'checking similarity...')
20
 
21
- original_image = load_image_url(images[0].sourceUrl)
22
  original_image_shape = original_image.shape
23
 
24
  results = []
25
 
26
  for i in range(1, len(images)):
27
- image = load_image_url(images[i].sourceUrl)
28
  image = cv2.resize(image, original_image_shape[::-1])
29
  s, _ = ssim(original_image, image, full=True)
30
  similarity_score = (s + 1) * 50
 
1
+ import base64
2
+ import io
3
  from typing import List
4
  from skimage.metrics import structural_similarity as ssim
5
  import cv2
 
10
  from models import RequestModel, ResponseModel
11
 
12
 
13
+ def load_image_url(source):
14
+ if source.startswith('http'):
15
+ img = Image.open(requests.get(source, stream=True).raw)
16
+ else:
17
+ img_data = base64.b64decode(source)
18
+ img = Image.open(io.BytesIO(img_data))
19
+
20
  img = np.array(img.convert('L'))
21
  return img
22
 
 
24
  def check_similarity(images: List[RequestModel]):
25
  print(f'checking similarity...')
26
 
27
+ original_image = load_image_url(images[0].source)
28
  original_image_shape = original_image.shape
29
 
30
  results = []
31
 
32
  for i in range(1, len(images)):
33
+ image = load_image_url(images[i].source)
34
  image = cv2.resize(image, original_image_shape[::-1])
35
  s, _ = ssim(original_image, image, full=True)
36
  similarity_score = (s + 1) * 50