YOLO:将json文件转换为txt文件
因为YOLO训练的时候有自己的标注格式,因此需要将labelme标注的json格式的数据转成yolo需要的txt格式。
json各部分的含义在上一篇中已经详细介绍。
今天记录的是如何将json转换成txt。
yolo需要的标注是五个值:类别 中心点x坐标 中心点y坐标 框的宽 框的高
因此我们需要将json中相应的值进行转换,并写入txt中。
1、将左上角右下角坐标注转换为中心点坐标
注:在转换时同时需要做归一化,归一化的方法是除以图片的宽或高,以得到0~1之间的值。
代码如下:
#将json的坐标转换为yolo的坐标转换后x,y为中心点坐标,w h为框的宽和高
def convert(img_size, box): # 坐标转换
dw = 1. / (img_size[0])
dh = 1. / (img_size[1])
x = (box[0] box[2]) / 2.0 * dw
y = (box[1] box[3]) / 2.0 * dh
w = (box[2] - box[0]) * dw
h = (box[3] - box[1]) *dh
return x, y, w, h #返回标准化后的值,即0-1之间的值
2、将json文件转换为txt文件,路径为json文件的路径,名字与json的文件名相同。
代码如下:
#仅对一个json文件转换成txt文件
def json2txt(json_file):
txt_name = json_file.split(".")[0] ".txt" # 生成txt文件存放的路径,放在原文档,仅将json转换为txt
# print(txt_name)
txt_file = open(txt_name, 'w')
# json_path = os.path.join(json_floder_path, json_name)
data = json.load(open(json_file, 'r', encoding='utf-8'))#打开json文件
# print(data)
# print(data["imagePath"])
image_path = json_file.split("labels")[0] "images\\" data["imagePath"]# 图片存放路径,要求图片与标签命名相同
# print(image_path)
h = data['imageHeight']#获取图片宽高
w = data['imageWidth']
# print(h, w)
for item in data['shapes']:
# print(item)
classify = classify_map[item['label']]# 此处为框的类别
# print(classify)
points = item['points']
# print(points)
x1 = min(points[0][0], points[1][0])
y1 = min(points[0][1], points[1][1])
x2 = max(points[0][0], points[1][0])
y2 = max(points[0][1], points[1][1])
box = [float(x1), float(y1), float(x2), float(y2)]
bb = (x1, y1, x2, y2)
bbox = convert((w, h), bb)
txt_file.write(str(classify) " " " ".join([str(a) for a in bbox]) '\n') # 此处将该目标类别记为“0”
3、对一个文件夹中的所有json转为txt文件。
代码如下:
#对一个文件夹中的所有json转为txt文件
def json2txts(path):
count = 0
files = os.listdir(path)
for file in files:
if file[-5:] == ".json":
json_file = path "\\" file
# print(json_file)
json2txt(json_file)
count = count 1
print("共将", count, "个json文件转成---->txt文件")
至此,即可将文件夹中所有的json文件均转为yolo训练时所需要的txt文件了。
你也许未曾见过的TEXT函数用法
与30万粉丝一起学ExcelTEXT是一个很好用的函数,用得好可以使公式更加简洁,跟卢子一起来看看。1.从系统导出来的时间变成货币格式,如何恢复正常?使用下面的公式,!:是强制显示符号:,没有!会变成错误值。=TEXT(C2,"00!:00!:00")并不是所有分隔符号都需要加!,比如将日期转换成年-月。e代表4位数的年,mm代表2位数的月。站长网2023-07-28 12:25:1200008个各类资源素材下载网站分享
编辑/排版:卒見之前收录整理软件的时候,发现有很多素材网站,可能有推荐过,不过本次给大家整理的内容比较综合。包含图片素材、视频素材以及其他音频或是艺术类素材。我们来看一下吧!01图片素材1Unsplash一个高清免费图片素材网站,免版权可商用。网站中的图片素材分类细致,涉及多个题材,包含壁纸、自然风景、艺术、商业等。官网:unsplash.com2Pixabay站长网2023-07-28 15:40:550000国家出品必属精品!国家免费开放的七大补课平台,收藏了!
1、“国家教育云”平台从小学学到高中,全部课程都有,积累10年课程和学习资料,非常具有含金量2、“智慧中小学”平台教育部官方出品!中小学云平台。小初高各个学科的学习资源这里都有,都是名校特级教师贡献的干货教学视频,中小学生千万不可错过!3、“人教点读”平台专门为中小学生量身打造!正版教程点读、立体化学习,方便家长进行课内学习问题答疑。4、“学宝”平台站长网2023-07-30 12:51:140000Excel中CUBE函数与数据模型的激情碰撞之一:初识
CUBE类函数非常强大,可以帮助我们充分利用数据模型超强的汇总分析能力。之前介绍过CUBE类函数。这次重新整理,并且将CUBE类函数与动态数组和LAMBDA等新函数结合,从而发挥出更加强大的数据处理能力。算是一个升级系列吧。站长网2023-07-28 13:56:240003在ps中为路径应用前景色的填充效果的方法及用前景色的填充效果的用途?
在PS中为路径应用前景色的填充效果的方法:首先,需要创建一个路径,可以使用钢笔工具或形状工具创建。选择路径,然后在路径面板中选择路径填充选项。在填充选项中选择前景色,并设置透明度、混合模式等属性。单击“填充路径”按钮,即可将前景色应用到路径上。前景色的填充效果的用途:为路径添加颜色或纹理,以实现图形的填充效果。在制作海报、广告等宣传材料时,可以使用填充效果为图形添加视觉效果。0000