当前位置:网站首页>The file marked by labelme is converted to yolov5 format
The file marked by labelme is converted to yolov5 format
2022-07-03 03:09: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 Save the location
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'): # Rectangular box dimensions only
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'): # Applicable point annotation
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 Folder path
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)
边栏推荐
- el-tree搜索方法使用
- labelimg生成的xml文件转换为voc格式
- VS 2019安装及配置opencv
- JS finds all the parent nodes or child nodes under a node according to the tree structure
- What happens between entering the URL and displaying the page?
- Joking about Domain Driven Design (III) -- Dilemma
- MySQL Real combat 45 [SQL query and Update Execution Process]
- 基于QT的tensorRT加速的yolov5
- I2C 子系统(二):I3C spec
- Privatization lightweight continuous integration deployment scheme -- 01 environment configuration (Part 2)
猜你喜欢
What is the way out for children from poor families?
VS 2019 配置tensorRT生成engine
迅雷chrome扩展插件造成服务器返回的数据js解析页面数据异常
MySQL practice 45 [SQL query and update execution process]
SqlServer行转列PIVOT
Thunderbolt Chrome extension caused the data returned by the server JS parsing page data exception
Opengauss database development and debugging tool guide
Gavin teacher's perception of transformer live class - rasa project's actual banking financial BOT Intelligent Business Dialogue robot architecture, process and phenomenon decryption through rasa inte
从C到Capable-----利用指针作为函数参数求字符串是否为回文字符
Three.js本地环境搭建
随机推荐
How to make backgroundworker return an object
Basic information of Promethus (I)
Agile certification (professional scrum Master) simulation exercise-2
Sqlserver row to column pivot
I2C 子系统(四):I2C debug
PHP constructor with parameters - PHP constructor with a parameter
Agile certification (professional scrum Master) simulation exercises
从输入URL到页面展示这中间发生了什么?
Kubernetes family container housekeeper pod online Q & A?
QT based tensorrt accelerated yolov5
About HTTP cache control
Nasvit: neural architecture search of efficient visual converter with gradient conflict perception hypernetwork training
Source code analysis | resource loading resources
Counter统计数量后,如何返回有序的key
[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
Force deduction ----- the minimum path cost in the grid
docker安装mysql
docker安装redis
Vs 2019 configure tensorrt to generate engine
[Fuhan 6630 encodes and stores videos, and uses RTSP server and timestamp synchronization to realize VLC viewing videos]