File size: 1,562 Bytes
93a5bb0
0e2fa7c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8cc8dd0
 
 
 
 
 
 
 
 
0e2fa7c
 
 
 
 
 
 
 
a2e72c5
0e2fa7c
 
 
 
 
 
 
 
 
 
 
8cc8dd0
0e2fa7c
 
 
 
 
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
import os
import sys
import cv2
import base64
import gradio as gr
import requests
import numpy as np
import configparser


def run(file):
    in_image = cv2.imread(file)

    encode_img = cv2.imencode('.jpg', in_image)[1].tostring()
    encode_img = base64.encodebytes(encode_img)
    base64_img = str(encode_img, 'utf-8')

    backend_url = os.getenv('BACKEND_URL')
    url = f'{backend_url}/raster-to-vector-base64'
    payload = {'image': base64_img}
    image_request = requests.post(url, json=payload)

    out_img = image_request.json()['image']
    out_json = image_request.json()['graph']

    decode_img = base64.b64decode(out_img.split(',')[1])
    decode_img = np.frombuffer(decode_img, dtype=np.uint8)
    out_img = cv2.imdecode(decode_img, flags=cv2.IMREAD_COLOR)

    return out_img, out_json


with gr.Blocks() as demo:
    gr.Markdown(
        """
    # Raster-To-Vector on Floor Plan images
    Please give me star if you like it and reach out to me to get on-premise solutions. (Email: andywu@kby-ai.com)
    """
    )

    with gr.TabItem("Floor Plan Recognition"):
        with gr.Row():
            with gr.Column():
                app_input = gr.Image(type='filepath')
                gr.Examples(['images/1.jpg', 'images/2.png', 'images/3.png', 'images/4.png'],
                            inputs=app_input)
                start_button = gr.Button("Run")
            with gr.Column():
                app_output = [gr.Image(type="numpy"), gr.JSON()]

        start_button.click(run, inputs=app_input, outputs=app_output)


demo.launch()