当前位置:网站首页>labelme标记的文件转换为yolov5格式
labelme标记的文件转换为yolov5格式
2022-07-03 03:06:00 【AphilGuo】
import json
import os
def convert(img_size, box):
x1 = box[0]
y1 = box[1]
x2 = box[2]
y2 = box[3]
center_x = (x1 + x2) * 0.5 / img_size[0]
center_y = (y1 + y2) * 0.5 / img_size[1]
w = abs((x2 - x1)) * 1.0 / img_size[0]
h = abs((y2 - y1)) * 1.0 / img_size[1]
return (center_x, center_y, w, h)
def convert1(img_size, box):
x1 = box[0]
y1 = box[1]
center_x = x1 / img_size[0]
center_y = y1 / img_size[1]
return (center_x, center_y)
def decode_json(jsonfloder_path, json_name):
txt_name = '/yolov5_labels/' + json_name[0:-5] + '.txt'
# txt保存位置
txt_file = open(txt_name, 'w') # te files
json_path = os.path.join(json_folder_path, json_name)
data = json.load(open(json_path, 'r'))
img_w = data['imageWidth']
img_h = data['imageHeight']
for i in data['shapes']:
if (i['shape_type'] == 'rectangle'): # 仅适用矩形框标注
x1 = float(i['points'][0][0])
y1 = float(i['points'][0][1])
x2 = float(i['points'][1][0])
y2 = float(i['points'][1][1])
if x1 < 0 or x2 < 0 or y1 < 0 or y2 < 0:
continue
else:
bb = (x1, y1, x2, y2)
bbox = convert((img_w, img_h), bb)
if i['label'] == "jc_re":
txt_file.write("0 " + " ".join([str(a) for a in bbox])+" ")
# elif i['label'] == "jc_point":
# txt_file.write("1 " + " ".join([str(a) for a in bbox]) + '\n')
# elif i['label'] == "Computer":
# txt_file.write("2 " + " ".join([str(a) for a in bbox]) + '\n')
# else:
# txt_file.write("3 " + " ".join([str(a) for a in bbox]) + '\n')
elif (i['shape_type'] == 'point'): # 适用点标注
x1 = float(i['points'][0][0])
y1 = float(i['points'][0][1])
if x1 < 0 or y1 < 0:
continue
else:
bb = (x1, y1)
bbox = convert1((img_w, img_h), bb)
if i['label'] == "jc_point":
# txt_file.write(" ".join([str(a) for a in bbox]) + "\n")
txt_file.write(" ".join([str(a) for a in bbox])+" ")
if __name__ == "__main__":
json_folder_path = 'json_path' # json文件夹路径
json_names = os.listdir(json_folder_path) # file name
for json_name in json_names: # output all files
if json_name[-5:] == '.json': # just work for json files
decode_json(json_folder_path, json_name)
边栏推荐
- Deep learning: multi-layer perceptron and XOR problem (pytoch Implementation)
- [fluent] future asynchronous programming (introduction | then method | exception capture | async, await keywords | whencomplete method | timeout method)
- Three. JS local environment setup
- C#通用接口调用
- Serious security vulnerabilities reported by moxa mxview network management software
- 力扣------网格中的最小路径代价
- Docker install redis
- 处理数据集,使用LabelEncoder将所有id转换为从0开始
- [leectode 2022.2.15] lucky numbers in the matrix
- Deep reinforcement learning for intelligent transportation systems: a survey paper reading notes
猜你喜欢

I2C 子系统(二):I3C spec

左连接,内连接

Docker install redis

用docker 連接mysql的過程

Deep Reinforcement Learning for Intelligent Transportation Systems: A Survey 论文阅读笔记

MySql实战45讲【事务隔离】

Baidu map - surrounding search

Super easy to use logzero
![[shutter] monitor the transparency gradient of the scrolling action control component (remove the blank of the top status bar | frame layout component | transparency component | monitor the scrolling](/img/c3/b9a614001f80345a5c1cb3c68ab27c.jpg)
[shutter] monitor the transparency gradient of the scrolling action control component (remove the blank of the top status bar | frame layout component | transparency component | monitor the scrolling

Sqlserver row to column pivot
随机推荐
Variable declarations following if statements
Deep Reinforcement Learning for Intelligent Transportation Systems: A Survey 论文阅读笔记
The base value is too large (the error is marked as "08") [duplicate] - value too great for base (error token is'08') [duplicate]
Practice of traffic recording and playback in vivo
Joking about Domain Driven Design (III) -- Dilemma
你真的懂继电器吗?
Use cve-2021-43893 to delete files on the domain controller
Nasvit: neural architecture search of efficient visual converter with gradient conflict perception hypernetwork training
tensor中的append应该如何实现
敏捷认证(Professional Scrum Master)模拟练习题-2
[leectode 2022.2.15] lucky numbers in the matrix
MySql实战45讲【索引】
Can I use read-only to automatically implement properties- Is read-only auto-implemented property possible?
Andwhere multiple or query ORM conditions in yii2
How to limit the size of the dictionary- How to limit the size of a dictionary?
MySQL practice 45 [SQL query and update execution process]
当lambda没有输入时,是何含义?
Counter统计数量后,如何返回有序的key
Getting started | jetpack hilt dependency injection framework
Deep learning: multi-layer perceptron and XOR problem (pytoch Implementation)