import gradio as gr import cv2 import json import numpy as np import glob2 as glob from pyAAMED import pyAAMED title = """

Arc Adjacency Matrix based Fast Ellipse Detection

Gitub """ def detect_ellipses(img_path): imgC = cv2.imread(img_path) imgG = cv2.cvtColor(imgC, cv2.COLOR_BGR2GRAY) ammed_size = 1200 iheight, iwidth = imgG.shape imax = max(iheight, iwidth) iscale = ammed_size / imax is_landscape = iwidth >= iheight if is_landscape: iw = imax * iscale ih = iheight * iscale else: iw = iwidth * iscale ih = imax * iscale imgG = imgG.resize(int(iw), int(ih)) if is_landscape: ipad = int((imax - iheight) / 2 * iscale) imgG = cv2.copyMakeBorder(imgG, ipad, ipad, 0, 0, cv2.BORDER_REPLICATE) else: ipad = int((imax - iwidth) / 2 * iscale) imgG = cv2.copyMakeBorder(imgG, 0, 0, ipad, ipad, cv2.BORDER_REPLICATE) aamed = pyAAMED(ammed_size, ammed_size) aamed.setParameters(3.1415926/3, 3.4, 0.77) result = aamed.run_AAMED(imgG) print(result) result = result.replace(' ', ', ') print(result) result = json.loads(result) print(result) return [img_path, json.dumps(result)] examples = [ ["./AAMED/python/002_0038.jpg"] ] test_files = glob.glob('examples/*.jpg') + glob.glob('examples/*.png') for f in test_files: examples = examples + [f] gr.Interface( fn=detect_ellipses, inputs=gr.Image(label="Upload image with ellipses", type="filepath"), outputs=[ gr.Image(type="filepath", label="Detected ellipses"), gr.Textbox(label="Detected ellipses") ], title=title, examples=examples, allow_flagging='never' ).launch( debug=True, server_name="0.0.0.0", server_port=7860 )