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: Please contact us if you want to run our on-premise solution on your server to speedup the pipeline
Email: contact@rasterscan.com
WhatsApp: +1 938 202 5720 """ ) with gr.TabItem("Floor Plan Recognition"): gr.Markdown( """ ##### Docker Hub - https://hub.docker.com/r/rasterscan/floor-plan-recognition ##### API Documentation - https://docs.rasterscan.com/ ```bash sudo docker pull rasterscan/floor-plan-recognition:latest-cpu sudo docker run --name rasterscan-service -d -p 8888:8888 rasterscan/floor-plan-recognition:latest-cpu ``` """ ) 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(show_api=False)