-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathget_initial_seed.py
65 lines (64 loc) · 2.34 KB
/
get_initial_seed.py
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
def get_initial_seed(img, side):
"""
function: 获得增长初始点
:param img: 源二值边缘
:param side: 增长方向
:return:initial_seed: 初始种子点, direction: 增长掩码
"""
seed = []
h, w = img.shape
flag = 0
initial_seed, direction = (0, 0), 0
if side == 'top':
direction = [[1, 1], [0, 1], [-1, 1], [1, 0], [-1, 0]]
for i in range(h):
for j in range(round(w/2)-20, round(w/2)+20):
if img[i, j] == 255:
seed.append((j, i))
flag = 1
if flag:
initial_seed = seed[int(len(seed) / 2)]
break
elif side == 'bottom':
direction = [[-1, -1], [0, -1], [1, -1], [1, 0], [-1, 0]]
for i in range(h - 1, -1, -1):
for j in range(round(w/2)-20, round(w/2)+20):
if img[i, j] == 255:
seed.append((j, i))
flag = 1
if flag:
initial_seed = seed[int(len(seed) / 2)]
break
elif side == 'left':
direction = [[0, -1], [1, -1], [1, 1], [0, 1], [1, 0]]
for j in range(round(w/2)-20, round(w/2)+20):
for i in range(h):
if img[i, j] == 255:
seed.append((j, i))
flag = 1
if flag:
initial_seed = seed[int(len(seed) / 2)]
break
elif side == 'right':
direction = [[-1, -1], [0, -1], [0, 1], [-1, 1], [-1, 0]]
for j in range(round(w/2)+20-1, round(w/2)-20-1, -1):
for i in range(h):
if img[i, j] == 255:
seed.append((j, i))
flag = 1
if flag:
initial_seed = seed[int(len(seed) / 2)]
break
elif side == 'all':
direction = [[-1, -1], [0, -1], [1, -1], [1, 1], [0, 1], [-1, 1], [1, 0], [-1, 0]]
for i in range(h - 1, -1, -1):
for j in range(round(w/2)-20, round(w/2)+20):
if img[i, j] == 255:
seed.append((j, i))
flag = 1
if flag:
initial_seed = seed[int(len(seed) / 2)]
break
else:
print('Invalid side')
return initial_seed, direction