json代码转成txt(yolo专用txt)

第一章 导包

import os
import json

第二章 两条路径

json_dir = ''  # json文件路径
out_dir = ''  # 输出的 txt 文件路径

 第三章 读取json文件

def get_json(json_file, filename):
    # 读取 json 文件数据
    with open(json_file, 'r') as load_f:
        content = json.load(load_f)

第四章 创建txt文件并写入

 

tmp = filename
    filename_txt = out_dir + tmp + '.txt'
    # 创建txt文件
    fp = open(filename_txt, mode="w", encoding="utf-8")
    # 将数据写入文件
    # 计算 yolo 数据格式所需要的中心点的 相对 x, y 坐标, w,h 的值
    x = (content["shapes"][0])["points"][0][0]
    y = (content["shapes"][0])["points"][0][1]
    w = (content["shapes"][0])["points"][1][0] - (content["shapes"][0])["points"][0][0]
    h = (content["shapes"][0])["points"][1][1] - (content["shapes"][0])["points"][0][1]
    fp = open(filename_txt, mode="r+", encoding="utf-8")
    file_str = str(filename) + ' ' + str(round(x, 6)) + ' ' + str(round(y, 6)) + ' ' + str(round(w, 6)) + \
               ' ' + str(round(h, 6))
    line_data = fp.readlines()
 
    if len(line_data) != 0:
        fp.write('\n' + file_str)
    else:
        fp.write(file_str)
    fp.close()

第六章 遍历文件夹

def main():
    files = os.listdir(json_dir)  # 得到文件夹下的所有文件名称
    s = []
    for file in files:  # 遍历文件夹
        filename = file.split('.')[0]
        # print(tmp)
        get_json(json_dir + file, filename)
 

第七章 创建主函数并调用

if __name__ == '__main__':
    main()

全部代码如下:

import os
import json
 
json_dir = ''  # json文件路径
out_dir = ''  # 输出的 txt 文件路径
 
 
def get_json(json_file, filename):
    # 读取 json 文件数据
    with open(json_file, 'r') as load_f:
        content = json.load(load_f)
 
    # # 循环处理
    tmp = filename
    filename_txt = out_dir + tmp + '.txt'
    # 创建txt文件
    fp = open(filename_txt, mode="w", encoding="utf-8")
    # 将数据写入文件
    # 计算 yolo 数据格式所需要的中心点的 相对 x, y 坐标, w,h 的值
    x = (content["shapes"][0])["points"][0][0]
    y = (content["shapes"][0])["points"][0][1]
    w = (content["shapes"][0])["points"][1][0] - (content["shapes"][0])["points"][0][0]
    h = (content["shapes"][0])["points"][1][1] - (content["shapes"][0])["points"][0][1]
    fp = open(filename_txt, mode="r+", encoding="utf-8")
    file_str = str(filename) + ' ' + str(round(x, 6)) + ' ' + str(round(y, 6)) + ' ' + str(round(w, 6)) + \
               ' ' + str(round(h, 6))
    line_data = fp.readlines()
 
    if len(line_data) != 0:
        fp.write('\n' + file_str)
    else:
        fp.write(file_str)
    fp.close()
 
 
def main():
    files = os.listdir(json_dir)  # 得到文件夹下的所有文件名称
    s = []
    for file in files:  # 遍历文件夹
        filename = file.split('.')[0]
        # print(tmp)
        get_json(json_dir + file, filename)
 
 
if __name__ == '__main__':
    main()

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李烁.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值