-
Notifications
You must be signed in to change notification settings - Fork 0
/
json_to_yolo.py
36 lines (26 loc) · 1.1 KB
/
json_to_yolo.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
import os
import json
# Create the output directory if it doesn't exist
def json_to_yolo(input_dir, output_dir, class_labels):
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.endswith('.json'):
with open(os.path.join(input_dir, filename)) as f:
data = json.load(f)
with open(os.path.join(output_dir, filename.replace('.json', '.txt')), 'w') as out_file:
for shape in data['shapes']:
x1, y1 = shape['points'][0]
x2, y2 = shape['points'][1]
dw = 1./data['imageWidth']
dh = 1./data['imageHeight']
w = x2 - x1
h = y2 - y1
x = x1 + (w/2)
y = y1 + (h/2)
x *= dw
w *= dw
y *= dh
h *= dh
class_label = class_labels[shape['label']]
out_file.write(f"{class_label} {x} {y} {w} {h}\n")
print("Conversion completed successfully!")