File size: 1,973 Bytes
fb41312
88de542
390ad5b
85df948
d8fbaf2
4a0cbf8
fb41312
6aa96a4
 
88de542
 
 
 
fb41312
88de542
 
 
 
c706d22
390ad5b
90c0555
390ad5b
 
 
 
 
 
 
 
 
 
9f54a3d
390ad5b
 
0089432
390ad5b
 
0089432
390ad5b
 
 
88de542
01763a3
 
390ad5b
bd6297f
362f9c0
03cc5b5
 
4386942
 
 
390ad5b
bd6297f
03cc5b5
88de542
03cc5b5
fb41312
882e081
 
 
 
d041661
 
c70d8ad
d8fbaf2
fb41312
4d327e3
 
bd6297f
bb6f75b
ff771ad
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
70
71
72
73
74
75
76
77
78
79
80
81
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 / 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)))

    if is_landscape:
        ipad = int(ammed_size - ih)
        imgG = cv2.copyMakeBorder(imgG, ipad, ipad, 0, 0, cv2.BORDER_REPLICATE)
    else:
        ipad = int(ammed_size - iw)
        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)

    print(ammed_size, iw, ih, imgG.shape)
    
    result = aamed.run_AAMED(imgG)
    print(result)

    """
    if result != "":
        result = ",".join(filter(lambda s: s != "", result.split(" ")))
        print(result)
    result = json.loads(result)
    print(result)
    """

    return [Image.fromarray(imgG), 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="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
)