当前位置:网站首页>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)
边栏推荐
- 你真的懂继电器吗?
- Left connection, inner connection
- How to implement append in tensor
- [C语言]给账号密码进行MD5加密
- SQL Server Query spécifie la structure de la table
- MySQL practice 45 [global lock and table lock]
- Process the dataset and use labelencoder to convert all IDs to start from 0
- HW initial preparation
- The base value is too large (the error is marked as "08") [duplicate] - value too great for base (error token is'08') [duplicate]
- [principles of multithreading and high concurrency: 1_cpu multi-level cache model]
猜你喜欢
[principles of multithreading and high concurrency: 1_cpu multi-level cache model]
I2C subsystem (II): I3C spec
45 lectures on MySQL [index]
docker安装redis
Didi programmers are despised by relatives: an annual salary of 800000 is not as good as two teachers
I2C 子系统(二):I3C spec
Force deduction ----- the minimum path cost in the grid
MySql实战45讲【事务隔离】
What is the way out for children from poor families?
Kubernetes family container housekeeper pod online Q & A?
随机推荐
后管中编辑与预览获取表单的值写法
Joking about Domain Driven Design (III) -- Dilemma
Parameter index out of range (1 > number of parameters, which is 0)
Do you really understand relays?
MySql实战45讲【行锁】
Add MDF database file to SQL Server database, and the error is reported
The difference between componentscan and componentscans
Change cell color in Excel using C - cell color changing in Excel using C
docker安装redis
Andwhere multiple or query ORM conditions in yii2
Left connection, inner connection
How to use asp Net MVC identity 2 change password authentication- How To Change Password Validation in ASP. Net MVC Identity 2?
Update and return document in mongodb - update and return document in mongodb
C语言中左值和右值的区别
Opengauss database development and debugging tool guide
Notifydatasetchanged not applicable to recyclerview - notifydatasetchanged not working on recyclerview
Sqlserver row to column pivot
SQL server queries the table structure of the specified table
What happens between entering the URL and displaying the page?
[fluent] futurebuilder asynchronous programming (futurebuilder construction method | asyncsnapshot asynchronous calculation)