File size: 1,701 Bytes
fb41312
88de542
390ad5b
85df948
fb41312
6aa96a4
 
88de542
 
 
 
fb41312
88de542
 
 
 
390ad5b
 
90c0555
390ad5b
 
 
 
 
 
 
 
 
 
90c0555
390ad5b
 
90c0555
390ad5b
 
90c0555
390ad5b
 
 
88de542
390ad5b
bd6297f
362f9c0
390ad5b
362f9c0
390ad5b
bd6297f
88de542
390ad5b
fb41312
882e081
 
 
 
fb41312
4d327e3
 
bd6297f
 
 
008f257
88de542
bcfe357
 
362f9c0
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import gradio as gr
import cv2
import json
import numpy as np

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 = 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"]
]

gr.Interface(
    fn=detect_ellipses,
    inputs=gr.Image(label="Upload image with ellipses", type="filepath"),
    outputs=[
        gr.Image(type="filepath", label="Detected ellipses"),
        gr.Text(label="Detected data")
    ],
    title=title,
    examples=examples,
    allow_flagging='never'
).launch(
    debug=True,
    server_name="0.0.0.0", 
    server_port=7860
)