|
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() |
|
|