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文件了。
这几个免费网站,你肯定会感兴趣的
hello大家好,这里是假期也有要爆肝更新的摸鱼塘塘主老Y。看在老Y假期也在“加班”的份上,要个点赞和推荐不过分吧。大家的推荐和点赞是老Y前进的动力。今天不偷懒,带来4个还不错的免费网站,起床的没起床的都可以看看,收藏起来先,希望你的收藏夹还好01、杂志阅读平台网址:/站长网2023-07-29 15:11:080000Excel求和函数公式:数据如何根据日期按月份求和
编按:今天给大家讲解数据日期如何用函数公式对月份进行求和?最近,有读者提出了上面这个问题,小编随机模拟了一份日期按照月份求和的案例当做今天演示使用。如下图:现需要根据A列的日期按照月份将每个月求和的结果分别计算到F2、G2、H2单元格中。站长网2023-07-29 18:01:410005WPS表格美化技巧:如何把双轴线组合图表变得好看些
编按:在《用WPS表格制作双轴线组合图表》一文中,我们为大家详细讲解了双轴线组合图表的制作方法。今天,我们将手把手教大家美化双轴线组合图表,堪称保姆级教程。一起来看看吧!上期讲了柱形与折线双轴线组合图表的制作过程。今天我就手把手带大家对图表进行美化。—美化前——美化后—1.双击整个图表,在右侧弹出的【属性】窗口中将颜色调整为灰色,将透明度数值调到16%。站长网2023-07-28 17:06:420000软件工程的问题
我长期以来一直是这个应用程序的用户,它一直快速、响应迅速且易于使用。然而,在上周的一次更新之后,启动时间从不到一秒钟大幅增加到超过15秒。唯一明显的变化是添加了一个新的启动界面和更新了用户界面。我经常发现自己在质疑为什么工程师们会给应用程序添加某些功能,却无意中引发其他问题。站长网2023-07-28 16:27:050000在制作PPT时,有时候我们需要将文字放在图片上,以达到更好的视觉效果和信息传递效果。
下面介绍几种方法来实现这个目标。一、使用文本框在PPT中插入图片。在“插入”选项卡中,选择“文本框”。在图片上单击鼠标左键并拖动,创建一个文本框。在文本框中输入想要添加的文字。可以通过更改文本框的大小和位置,调整文字在图片上的位置和大小。二、使用形状在PPT中插入图片。在“插入”选项卡中,选择“形状”。在形状库中选择一个形状,比如矩形。站长网2023-07-28 11:41:150000