Skip to content

Commit 9ea6284

Browse files
committed
ver. 0.15.10
1 parent 627d8de commit 9ea6284

File tree

6 files changed

+89
-3
lines changed

6 files changed

+89
-3
lines changed

npy/files/io.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ def load_txt(fpath):
3838
return f.read()
3939

4040

41+
def load_txtlines(fpath):
42+
with open(fpath, 'r') as f:
43+
return [l.strip() for l in f.readlines()]
44+
45+
4146
def load_video(fpath):
4247
vidcap = cv2.VideoCapture(fpath)
4348

npy/image/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
from .modify import *
55
from .miscs import *
66
from . import augment
7+
from .bbox import *

npy/image/bbox.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import math
2+
3+
__all__ = ['pad_bbox', 'square_bbox']
4+
5+
6+
def pad_bbox(xyxy, padding_ratio, H, W):
7+
x1, y1, x2, y2 = xyxy
8+
y1, y2, x1, x2 = int(y1), int(y2), int(x1), int(x2)
9+
10+
if padding_ratio != 0:
11+
bbox_H = y2 - y1
12+
bbox_W = x2 - x1
13+
14+
bbox_Hc = (y2 + y1) / 2
15+
bbox_Wc = (x2 + x1) / 2
16+
17+
bbox_H2 = bbox_H * (1 + padding_ratio) / 2
18+
bbox_W2 = bbox_W * (1 + padding_ratio) / 2
19+
y1 = bbox_Hc - bbox_H2
20+
y2 = bbox_Hc + bbox_H2
21+
x1 = bbox_Wc - bbox_W2
22+
x2 = bbox_Wc + bbox_W2
23+
24+
y1, y2, x1, x2 = int(y1), int(y2), int(x1), int(x2)
25+
y1 = max(0, y1)
26+
x1 = max(0, x1)
27+
28+
x2 = min(W, x2)
29+
y2 = min(H, y2)
30+
return x1, y1, x2, y2
31+
32+
33+
def square_bbox(xyxy, H, W):
34+
x1, y1, x2, y2 = xyxy
35+
h, w = y2 - y1, x2 - x1
36+
if h > w:
37+
c = int(math.ceil((x1 + x2) / 2))
38+
x1 = c - h // 2
39+
x2 = c + h - h // 2
40+
if x1 < 0:
41+
x2 -= x1
42+
x1 -= x1
43+
elif x2 > W:
44+
x1 -= (x2 - W)
45+
x2 -= (x2 - W)
46+
elif w > h:
47+
c = int(math.ceil((y1 + y2) / 2))
48+
y1 = c - w // 2
49+
y2 = c + w - w // 2
50+
if y1 < 0:
51+
y2 -= y1
52+
y1 -= y1
53+
elif y2 > H:
54+
y1 -= (y2 - H)
55+
y2 -= (y2 - H)
56+
return x1, y1, x2, y2

npy/utils/utils_primitive/utils_dict.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
__all__ = ['keys_d_of_l_of_num', 'keys_d_of_num',
55
'append_d_of_l', 'inv_d', 'replace_keys', 'drop_keys',
66
'filter_d_of_l_of_num', 'filter_d_of_num', 'filter_keys', 'filter_empty',
7-
'dict_eq', 'l_of_dict_eq', 'add_d_of_l'
7+
'dict_eq', 'l_of_dict_eq', 'add_d_of_l', 'merge_l_of_d'
88
]
99

1010

@@ -62,6 +62,18 @@ def append_d_of_l(d_of_l: dict, d: dict):
6262
return d_of_l
6363

6464

65+
def merge_l_of_d(l_of_d: list) -> dict:
66+
if len(l_of_d) == 0:
67+
return {}
68+
69+
keys = list(l_of_d[0].keys())
70+
ret = {k: [] for k in keys}
71+
for d in l_of_d:
72+
for k in keys:
73+
ret[k].append(d[k])
74+
return ret
75+
76+
6577
def add_d_of_l(d_of_l: dict, d_of_l2: dict, reverse=False):
6678
if d_of_l is None:
6779
return d_of_l2

npy/utils/utils_primitive/utils_list.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from collections.abc import Iterable
33

44

5-
__all__ = ['take', 'isarray', 'isnum', 'shuffled']
5+
__all__ = ['take', 'isarray', 'isnum', 'shuffled', 'normalize_l']
66

77

88
def take(l, inds_or_ind):
@@ -28,3 +28,15 @@ def shuffled(x, y=None):
2828
return take(x, inds)
2929
else:
3030
return take(x, inds), take(y, inds)
31+
32+
33+
def normalize_l(arr):
34+
only_values = arr[~np.isinf(arr)]
35+
if len(only_values) == 0:
36+
return arr
37+
vmax = np.max(only_values)
38+
vmin = np.min(only_values)
39+
dur = vmax - vmin
40+
if dur == 0:
41+
dur = 1
42+
return (arr - vmin) / dur

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
setup(name='nuclear-python',
1212

13-
version='0.15.9',
13+
version='0.15.10',
1414

1515
url='https://github.com/nuclearboy95/nuclear-python',
1616

0 commit comments

Comments
 (0)