|
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. |
|
</br>Please ❤️ this space |
|
|
|
## Contact |
|
|
|
<a target="_blank" href="mailto:contact@rasterscan.com"><img src="https://img.shields.io/badge/email-contact@rasterscan.com-blue.svg?logo=gmail " alt="rasterscan.com"></a>  |
|
|
|
""" |
|
) |
|
|
|
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('<a href="https://visitorbadge.io/status?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2FRasterScan%2FAutomated-Floor-Plan-Digitalization"><img src="https://api.visitorbadge.io/api/combined?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2FRasterScan%2FAutomated-Floor-Plan-Digitalization&label=Visitors&countColor=%2337d67a" /></a>') |
|
|
|
demo.launch() |
|
|