|
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].tobytes() |
|
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'] |
|
door_json = image_request.json()['doors'] |
|
wall_json = image_request.json()['walls'] |
|
out_json = {'doors': door_json, 'walls': wall_json} |
|
|
|
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 |
|
by [Rasterscan](https://rasterscan.com/) |
|
|
|
Please ❤️ this space |
|
|
|
If you want to get on-premise solutions, please contact us on [email protected] |
|
|
|
""" |
|
) |
|
|
|
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() |
|
|