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'] room_json = image_request.json()['rooms'] area = image_request.json()['area'] perimeter = image_request.json()['perimeter'] out_json = { 'doors': door_json, 'walls': wall_json, 'rooms': room_json, 'area': area, 'perimeter': perimeter } 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( """ # Floor Plan Recognition by [Rasterscan](https://rasterscan.com/) ## About Us RasterScan stands at the forefront of innovation in the realm of architectural and interior design, revolutionizing the way professionals and enthusiasts alike visualize and create spaces. Specializing in floor plan recognition and design, RasterScan harnesses the power of cutting-edge technology to transform blueprints, hand-sketches, and existing floor plans into immersive, three-dimensional models.
Please ❤️ this space ## Contact rasterscan.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) gr.HTML('') demo.launch()