| 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. (Whatsapp only: +1 442 229 5661) | |
| """ | |
| ) | |
| 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() | |