Safemotion Lib
Loading...
Searching...
No Matches
transforms.py
Go to the documentation of this file.
1import copy
2import torch
3
4#numpy 타입, list 타입, 배치단위 처리 추가 필요
5def xyxy_to_xywh(xyxy):
6 """
7 xyxy 구조박스의 xywh 구조를 변경하는 기능
8 xyxy: left, top, right, bottom
9 xywh: left, top, width, height
10 args:
11 xyxy(list or np.array): xyxy 구조의 박스
12 return (list or np.array): xywh 구조의 박스
13 """
14 xywh = copy.deepcopy(xyxy)
15 xywh[2] = xyxy[2]-xyxy[0]
16 xywh[3] = xyxy[3]-xyxy[1]
17 return xywh
18
19def xywh_to_xyxy(xywh):
20 """
21 xywh 구조박스의 xyxy 구조를 변경하는 기능
22 xyxy: left, top, right, bottom
23 xywh: left, top, width, height
24 args:
25 xywh(list or np.array): xywh 구조의 박스
26 return (list or np.array): xyxy 구조의 박스
27 """
28 xyxy = copy.deepcopy(xywh)
29 xyxy[2] = xywh[2]+xywh[0]
30 xyxy[3] = xywh[3]+xywh[1]
31 return xyxy
32
33def xyxy_to_cwh(xyxy):
34 """
35 xywh 구조박스의 cwh 구조를 변경하는 기능
36 xyxy: left, top, right, bottom
37 cwh: 박스 중심점(cx, cy), width, height,
38 args:
39 xyxy(list or np.array): xyxy 구조의 박스
40 return (list or np.array): cwh 구조의 박스
41 """
42 cwh = copy.deepcopy(xyxy)
43 cwh[2] = xyxy[2]-xyxy[0]
44 cwh[3] = xyxy[3]-xyxy[1]
45 cwh[0] = xyxy[0]+cwh[2]*0.5
46 cwh[1] = xyxy[1]+cwh[3]*0.5
47 return cwh
48
49def cwh_to_xyxy(cwh):
50 """
51 cwh 구조박스의 xywh 구조를 변경하는 기능
52 xyxy: left, top, right, bottom
53 cwh: 박스 중심점(cx, cy), width, height,
54 args:
55 cwh(list or np.array): cwh 구조의 박스
56 return (list or np.array): xyxy 구조의 박스
57 """
58 xyxy = copy.deepcopy(cwh)
59 xyxy[0] = cwh[0]-cwh[2]*0.5
60 xyxy[1] = cwh[1]-cwh[3]*0.5
61 xyxy[2] = cwh[2]+xyxy[0]
62 xyxy[3] = cwh[3]+xyxy[1]
63 return xyxy
64
66 """
67 xyxy 구조박스의 cxcyah 구조를 변경하는 기능
68 xyxy: left, top, right, bottom
69 cxcyah: 박스 중심점(cx, cy), ratio, height,
70 args:
71 bboxes(np.array): xyxy 구조의 박스
72 return (np.array): cxcyah 구조의 박스
73 """
74 cx = (bboxes[:, 2] + bboxes[:, 0]) / 2
75 cy = (bboxes[:, 3] + bboxes[:, 1]) / 2
76 w = bboxes[:, 2] - bboxes[:, 0]
77 h = bboxes[:, 3] - bboxes[:, 1]
78 xyah = torch.stack([cx, cy, w / h, h], -1)
79 return xyah
80
81
83 """
84 cxcyah 구조박스의 xyxy 구조를 변경하는 기능
85 xyxy: left, top, right, bottom
86 cxcyah: 박스 중심점(cx, cy), ratio, height,
87 args:
88 bboxes(np.array): cxcyah 구조의 박스
89 return (np.array): xyxy 구조의 박스
90 """
91 cx, cy, ratio, h = bboxes.split((1, 1, 1, 1), dim=-1)
92 w = ratio * h
93 x1y1x2y2 = [cx - w / 2.0, cy - h / 2.0, cx + w / 2.0, cy + h / 2.0]
94 return torch.cat(x1y1x2y2, dim=-1)
95
xyxy_to_cwh(xyxy)
Definition transforms.py:33
cwh_to_xyxy(cwh)
Definition transforms.py:49
bbox_xyxy_to_cxcyah(bboxes)
Definition transforms.py:65
bbox_cxcyah_to_xyxy(bboxes)
Definition transforms.py:82
xywh_to_xyxy(xywh)
Definition transforms.py:19
xyxy_to_xywh(xyxy)
Definition transforms.py:5