File size: 3,686 Bytes
2e2dda5
 
 
 
 
 
 
 
 
 
 
 
79bf7a7
 
 
2e2dda5
 
 
 
 
 
 
 
 
 
 
eb03410
2e2dda5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eb03410
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
import json
import os
import sys
import boto3
from botocore.config import Config
import getpass
import streamlit as st


from opensearchpy import OpenSearch, RequestsHttpConnection


rekog_client = boto3.client('rekognition',aws_access_key_id=st.secrets['user_access_key'],
                aws_secret_access_key=st.secrets['user_secret_key'],region_name='us-east-1')


def extract_image_metadata(img):
    res = rekog_client.detect_labels(
    Features= [ "GENERAL_LABELS","IMAGE_PROPERTIES" ],
    Image = { 
        
        "Bytes":img
    },
    MaxLabels = 10,
    MinConfidence = 80.0,
    Settings = { 
    
        "ImageProperties": { 
            "MaxDominantColors": 5
        }
    }
    )
    objects_category_color = {}
    objects_category_color_masked = {}
    
    def add_span(x,type):
        if(type == 'obj'):
            return "<span style='color:#e28743;font-weight:bold'>"+x+"</span>"
        if(type == 'cat'):
            return "<span style='color:green;font-style:italic'>"+x+"</span>"
        if(type == 'color'):
            return "<span style='color:"+x+";font-weight:bold'>"+x+"</span>"
        
    
    for label in res['Labels']:
        objects_category_color_masked[add_span(label['Name'],'obj')]={'categories':[],'color':""}
        objects_category_color[label['Name']] = {'categories':[],'color':""}
        if(len(label['Categories'])!=0):
            for category in label['Categories']:
                objects_category_color_masked[add_span(label['Name'],'obj')]['categories'].append(add_span(category['Name'].lower(),'cat'))
                objects_category_color[label['Name']]['categories'].append(category['Name'].lower())


        if(len(label['Instances'])!=0):
            for instance in label['Instances']:
                if(len(instance['DominantColors'])!=0):
                    objects_category_color[label['Name']]['color'] = instance['DominantColors'][0]['SimplifiedColor']
                    objects_category_color_masked["<span style='color:#e28743;font-weight:bold'>"+label['Name']+"</span>"]['color'] = add_span(instance['DominantColors'][0]['SimplifiedColor'],'color')
                
        st.session_state.input_rekog_directoutput = objects_category_color_masked
    objects = []
    categories = []
    colors = []
    for key in objects_category_color.keys():
        if(key.lower() not in objects):
            objects.append(key.lower())
        categories.append(" ".join(set(objects_category_color[key]['categories'])))
        if(objects_category_color[key]['color']!=''):
            colors.append(objects_category_color[key]['color'].lower())
            
    objects = " ".join(set(objects))
    categories = " ".join(set(categories))
    colors = " ".join(set(colors))
    return colors+ " " + objects + " " + categories

def call(a,b):
    if(st.session_state.input_is_rewrite_query == 'enabled' and st.session_state.input_rewritten_query!=""):
        
        
        st.session_state.input_rewritten_query['query']['bool']['should'].append( {
                    "simple_query_string": {
                    
                        "query": a + " " + b,
                        "fields":['description','rekog_all^3']
                    
                    }
                })
        rekog_query = st.session_state.input_rewritten_query
        
    else:
        rekog_query = { "query":{
                "simple_query_string": {
                  
                    "query": a + " " + b,
                    "fields":['description','rekog_all^3']
                  
                }
              }
            }
        st.session_state.input_rewritten_query = rekog_query