读取文件夹,将json文件转化为txt文件
- 一 样例1 json文件只有一个样本
-
- 二 样例2 json文件中有多个样本
-
- 三 样例3 json文件单样本
-
一 样例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 json
json_dir = 'C:/Users/YourName/Desktop/coco128/labels/train2017/'
out_dir = 'C:/Users/YourName/Desktop/output/'
def get_json(json_file, filename):
with open(json_file, 'r') as load_f:
content = json.load(load_f)
tmp = filename
filename_txt = out_dir + tmp + '.txt'
fp = open(filename_txt, mode="w", encoding="utf-8")
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]
get_json(json_dir+file, filename)
if __name__ == '__main__':
main()
3 效果图
原:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210614144623870.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbGx5Mg==,size_16,color_FFFFFF,t_70)
改后:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210614144641343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbGx5Mg==,size_16,color_FFFFFF,t_70)
txt内容:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210624163217349.png)
二 样例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 json
json_dir = 'C:/Users/YourName/Desktop/coco/jsonDir/'
out_dir = 'C:/Users/YourName/Desktop/coco/outputDir/'
def get_json(json_file, filename):
with open(json_file, 'r') as load_f:
content = json.load(load_f)
tmp = filename
filename_txt = out_dir + tmp + '.txt'
fp = open(filename_txt, mode="w", encoding="utf-8")
str_tmp = ""
version = content["version"]
flags = content["flags"]
str_tmp = str(version)+"\n"+str(flags)+"\n"
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_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 = (content["shapes"][i])["shape_type"]
flags = (content["shapes"][i])["flags"]
str_tmp += str(shape_type) + " " + str(flags) + "\n"
line_Color = content["lineColor"]
fill_Color = content["fillColor"]
imagePath = content["imagePath"]
imageData = content["imageData"]
for i in range(len(line_Color)):
str_tmp += str(line_Color[i]) + " "
str_tmp += "\n"
for 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_tmp
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]
get_json(json_dir+file, filename)
if __name__ == '__main__':
main()
3 效果图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210624163033808.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbGx5Mg==,size_16,color_FFFFFF,t_70)
三 样例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 json
json_dir = 'C:/Users/QiYan/Desktop/train/'
out_dir = 'C:/Users/QiYan/Desktop/output/'
def get_json(json_file, filename):
with open(json_file, 'r') as load_f:
content = json.load(load_f)
tmp = filename
filename_txt = out_dir + tmp + '.txt'
fp = open(filename_txt, mode="w", encoding="utf-8")
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]
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]
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]
get_json(json_dir+file, filename)
if __name__ == '__main__':
main()
3 效果图
![在这里插入图片描述](https://img-blog.csdnimg.cn/39b81f8a37c2439c9c5b8786bfc5f3f9.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)