写了一个labelme的rectangle json文件转yolo格式的脚本,欢迎点赞使用~~~
话不多说直接上代码~
import json
import glob
def load(file,out_dir):
# YOLOv5使用的标签映射,将LabelMe标签映射到对应的类别索引
label_mapping = {
'box': 0,
}
path = glob.glob(f'{file}\*.json')
for i in path:
try:
with open(i, 'r',encoding='utf-8') as f:
data = json.load(f)
# 转换每个标注
yolo_annotations = []
for annotation in data['shapes']:
label = annotation['label']
class_index = label_mapping.get(label)
if class_index is not None:
x, y = annotation['points'][0]
width = annotation['points'][1][0] - x
height = annotation['points'][1][1] - y
x_center = (x + width / 2) / data['imageWidth']
y_center = (y + height / 2) / data['imageHeight']
width /= data['imageWidth']
height /= data['imageHeight']
yolo_annotations.append(f"{class_index} {abs(x_center)} {abs(y_center)} {abs(width)} {abs(height)}")
name = i.split('.')[0].split('\\')[1]
# 将转换后的标注写入txt文件
with open(f'{out_dir}\{name}.txt', 'w') as f:
for annotation in yolo_annotations:
f.write(annotation + '\n')
except:
print(i)
pass
json_dir = 'js'
out_dir='txt'
load(json_dir,out_dir)