批量处理:读取文件夹,将json文件转化为txt文件
读取文件夹,将json文件转化为txt文件
- 一 样例1 json文件只有一个样本
- 1 json文件内容
- 2 代码转化
- 3 效果图
- 二 样例2 json文件中有多个样本
- 1 json文件内容
- 2 代码转化
- 3 效果图
- 三 样例3 json文件单样本
- 1 json文件内容
- 2 代码转化
- 3 效果图
一 样例1 json文件只有一个样本
1 json文件内容
{"version": "4.5.7","flags": {},"shapes": [{"label": "car","points": [[737.3076923076923,244.8461538461538],[1028.076923076923,555.6153846153846]],"group_id": null,"shape_type": "rectangle","flags": {}}],"imagePath": "..\\..\\images\\train2017\\000001.jpg","imageData": "/9j/4AAQSkZJR"
2 代码转化
读取文件夹,将json文件转化为txt文件,即将JSON的关键数据读出
import os
import jsonjson_dir = 'C:/Users/YourName/Desktop/coco128/labels/train2017/' # json文件路径
out_dir = 'C:/Users/YourName/Desktop/output/' # 输出的 txt 文件路径def get_json(json_file, filename):# 读取 json 文件数据with open(json_file, 'r') as load_f:content = json.load(load_f)# # 循环处理tmp = filenamefilename_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()
3 效果图
原:
改后:
txt内容:
二 样例2 json文件中有多个样本
1 json文件内容
{"version": "3.16.2","flags": {},"shapes": [{"label": "00000001","line_color": null,"fill_color": null,"points": [[167.0,114.0],[146.0,142.0],[177.0,145.0],[214.0,129.0],[210.0,102.0],[185.0,107.0]],"shape_type": "polygon","flags": {}},{"label": "00004702","line_color": null,"fill_color": null,"points": [[306.0,71.0],[289.0,109.0],[321.0,112.0],[359.0,78.0],[329.0,57.0]],"shape_type": "polygon","flags": {}}],
"lineColor": [0,255,0,128],"fillColor": [255,0,0,128],"imagePath": "048.jpg","imageData": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a"
}
2 代码转化
import os
import jsonjson_dir = 'C:/Users/YourName/Desktop/coco/jsonDir/' # json文件路径
out_dir = 'C:/Users/YourName/Desktop/coco/outputDir/' # 输出的 txt 文件路径def get_json(json_file, filename):# 读取 json 文件数据with open(json_file, 'r') as load_f:content = json.load(load_f)# # 循环处理tmp = filenamefilename_txt = out_dir + tmp + '.txt'#创建txt文件fp = open(filename_txt, mode="w", encoding="utf-8")#将数据写入文件str_tmp = "" #存储字符串内容#1.获取version、flags数据version = content["version"]flags = content["flags"]#暂存内容str_tmp = str(version)+"\n"+str(flags)+"\n"#2. 获取shapes数组中的数据#循环读取 shapes中的每一组数据,json文件中有2组数据,循环则是2个 [0,1]for i in range(2):label = (content["shapes"][i])["label"]line_color = (content["shapes"][i])["line_color"]fill_color = (content["shapes"][i])["fill_color"]str_tmp += str(label) + "\n" + str(line_color) + "\n" + str(fill_color) + "\n" ##暂存内容#读取points中的数据,有6组数据points_size = len((content["shapes"][i])["points"])for j in range(points_size):x = (content["shapes"][i])["points"][j][0]y = (content["shapes"][i])["points"][j][1]str_tmp += str(x) + " " + str(y) + "\n" ##暂存内容#读取shape_type,flagsshape_type = (content["shapes"][i])["shape_type"]flags = (content["shapes"][i])["flags"]str_tmp += str(shape_type) + " " + str(flags) + "\n" ##暂存内容#3. 获取lineColor、fillColor、imagePath、imageDataline_Color = content["lineColor"]fill_Color = content["fillColor"]imagePath = content["imagePath"]imageData = content["imageData"]#lineColor是数组,获取并存储lineColorfor i in range(len(line_Color)):str_tmp += str(line_Color[i]) + " "str_tmp += "\n" #换行效果#fillColor与lineColor一样,也为数组,获取并存储fillColorfor i in range(len(fill_Color)):str_tmp += str(fill_Color[i]) + " "str_tmp += "\n" #换行效果str_tmp += str(imagePath) + " " + str(imageData) + "\n" ##暂存内容fp = open(filename_txt, mode="r+", encoding="utf-8")file_str = str_tmpline_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()
3 效果图
三 样例3 json文件单样本
1 json文件内容
{"marks":[[240.47823834196888,57.812953367875636],[226.80673575129526,388.58290155440415],[235.33316062176164,227.56113989637305]],"slots":[[3,1, 1,90],[2,3,1,90]]}
2 代码转化
import os
import jsonjson_dir = 'C:/Users/QiYan/Desktop/train/' # 放json文件路径,train是放json文件的文件夹
out_dir = 'C:/Users/QiYan/Desktop/output/' # 输出的 txt 文件路径,output是放txt文件的文件夹def get_json(json_file, filename):# 读取 json 文件数据with open(json_file, 'r') as load_f:content = json.load(load_f)# # 循环处理tmp = filenamefilename_txt = out_dir + tmp + '.txt'#创建txt文件fp = open(filename_txt, mode="w", encoding="utf-8")#将数据写入文件#首先是mark,二维数组3*2,提取数据如下x1y1 = content["marks"][0][0]x1y2 = content["marks"][0][1]x2y1 = content["marks"][1][0]x2y2 = content["marks"][1][1]x3y1 = content["marks"][2][0]x3y2 = content["marks"][2][1]#slots为2*4的二维数组,提取数据如下s_x1y1 = content["slots"][0][0]s_x1y2 = content["slots"][0][1]s_x1y3 = content["slots"][0][2]s_x1y4 = content["slots"][0][3]s_x2y1 = content["slots"][1][0]s_x2y2 = content["slots"][1][1]s_x2y3 = content["slots"][1][2]s_x2y4 = content["slots"][1][3]#数据写入txt文档fp = open(filename_txt, mode="r+", encoding="utf-8")file_str = str(filename) + '\n' + str(round(x1y1, 6)) + ' ' + str(round(x1y2, 6)) + ' ' +\str(round(x2y1, 6)) + ' ' + str(round(x2y2, 6)) + str(round(x3y1, 6)) + ' ' + \str(round(x3y2, 6)) + '\n' + str(round(s_x1y1, 6)) +' ' + str(round(s_x1y2, 6)) + ' ' + \str(round(s_x1y3, 6)) + ' ' + str(round(s_x1y4, 6)) +' ' + str(round(s_x2y1, 6)) + \str(round(s_x2y2, 6)) + ' ' + str(round(s_x2y3, 6)) +' ' + str(round(s_x2y4, 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()
3 效果图
批量处理:读取文件夹,将json文件转化为txt文件相关推荐
- 【python】保存某个文件夹下所有图片名字到一个txt文件里
用python实现读取某一文件夹下的所有图片名字到一个txt文件 import os dir1='/data/Datasets/JPEGImages'#图片文件存放地址 txt1 = '/data/D ...
- 图像分类 数据准备(将文件夹中所有图片路径写到TXT文件中)
0文件夹里都是负样本,1文件夹的图像都是正样本图片,接下来就是生成图片的描述文件. 进入控制台 进入你的0/1文件夹下,输入以下命令: dir /b/s/p/w *.jpg > pos.txt, ...
- Ubuntu下如何将文件夹中图片索引写进txt文件中
方法之一 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt "find"后面跟的是当前文件下 ...
- 根据文件夹中的图片数据集生成.txt文件标签
文章目录 前言 数据集格式 Python实现 注意事项 前言 深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的. ...
- ubuntu18.04将文件夹中的所有图片名字写入txt
参考文章:Ubuntu下如何将文件夹中图片索引写进txt文件中 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt ...
- R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs absolute path)
R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs an absolute path from the ...
- cmd批量打印文件夹下的文件名,以及打印文件树
1.打印文件夹下文件名输出到00.txt中 dir *.* /b> 00.txt 运行get fileName.bat结果如图: 2.文件夹下以及子孙文件夹下的文件名以树形式打印 tree / ...
- vue前端上传文件夹的插件_基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件...
1. 前言 之前公司要在管理系统中做一个全局上传插件,即切换各个页面的时候,上传界面还在并且上传不会受到影响,这在vue这种spa框架面前并不是什么难题.然而后端大佬说我们要实现分片上传.秒传以及断点 ...
- java解压服务器文件夹,java获取远程服务器上的文件夹
java获取远程服务器上的文件夹 内容精选 换一换 安装X722板载网卡驱动软件包,使裸金属服务器支持在v5服务器上下发.其他类型服务器可跳过此步骤.本文以Windows Server 2016为例, ...
- 【Java文件操作(五)】从txt文件中读取字符串、乱码原因
我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...
最新文章
- 职业生涯发展技巧20则
- 阿里面试题:使用dubbo过程中遇到过哪些坑?
- C语言试题二十九之编写函数int function(int lim,int aa[max])求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
- GDB调试使用技巧 - 专职C++ - C++博客
- Ubuntu 16.04 + Nginx + Django 项目部署
- Spring : Spring Aop JDK和CGLIB动态代理调用过程
- ecall 方法必须打包到系统模块中_基于SpringBoot+Vue+Mysql开发的进销存管理系统
- linux 用户登陆全部记录,Linux—— 记录所有登陆用户的历史操作记录
- python基本语法结构
- 整理农行面试软开最常问到的题---------框架
- vgc机器人编程1到13题_工业机器人编程与实操 期末试题
- 开发板运行可执行文件提示not found的问题
- Google Chrome 常用插件清单
- 什么是UPS UPS的选购技巧介绍
- 护眼灯到底有没有护眼的效果?带你了解市面上的护眼灯真的护眼吗
- cp: omitting directory xxx
- 20175312陶光远 与 20175309刘雨恒 结对
- vscode写R语言代码
- 一文搞懂四种 WebSocket 使用方式
- Qt之撤销命令视图的使用(QUndoView)