Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import cv2 | |
| import json | |
| import numpy as np | |
| import glob2 as glob | |
| from PIL import Image | |
| from pyAAMED import pyAAMED | |
| title = """ | |
| <h1>Arc Adjacency Matrix based Fast Ellipse Detection</h1> | |
| <a href="https://github.com/Li-Zhaoxi/AAMED">Gitub</a> | |
| """ | |
| def detect_ellipses(img_path): | |
| imgC = cv2.imread(img_path) | |
| imgG = cv2.cvtColor(imgC, cv2.COLOR_BGR2GRAY) | |
| ammed_size = 600 | |
| iheight, iwidth = imgG.shape | |
| imax = max(iheight, iwidth) | |
| iscale = (ammed_size - 1) / imax | |
| is_landscape = iwidth >= iheight | |
| if is_landscape: | |
| iw = imax * iscale | |
| ih = iheight * iscale | |
| else: | |
| iw = iwidth * iscale | |
| ih = imax * iscale | |
| imgG = cv2.resize(imgG, (int(iw), int(ih))) | |
| aamed = pyAAMED(ammed_size, ammed_size) | |
| aamed.setParameters(3.1415926/3, 3.4, 0.77) | |
| print(ammed_size, iw, ih, imgG.shape) | |
| result = aamed.run_AAMED(imgG) | |
| if len(result) > 0: | |
| imgN = imgG.copy() | |
| imgN = cv2.cvtColor(imgN, cv2.COLOR_BRAY2RGB) | |
| for e in result: | |
| x, y, w, h, a, _ = e | |
| imgN = cv2.ellipse(imgN, (x, y), (w, h), -a, 0, 360, (0, 255, 0), 3) # image, center_coordinates, axesLength, angle, startAngle, endAngle, color, thickness | |
| # from CPP code: | |
| # temp.center.x = detEllipses[i].center.y; | |
| # temp.center.y = detEllipses[i].center.x; | |
| # temp.size.height = detEllipses[i].size.width; | |
| # temp.size.width = detEllipses[i].size.height; | |
| # temp.angle = -detEllipses[i].angle; | |
| return [Image.fromarray(imgN), json.dumps(result.tolist())] | |
| examples = [] | |
| 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="pil", 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 | |
| ) |