Files
ieemoo-ai-detecttracking/practice/json_to_data.py
2025-04-18 14:41:53 +08:00

90 lines
2.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""
Created on Wed Dec 18 15:44:33 2024
@author: ieemoo-zl003
"""
import json
import struct
import numpy as np
json_path = r"D:\DetectTracking\practice\resv11_test.json"
def write_binary_file(filename, datas):
with open(filename, 'wb') as f:
# 先写入数据中的key数量为C++读取提供便利)
key_count = len(datas)
f.write(struct.pack('I', key_count)) # 'I'代表无符号整型4字节
feats_32, feats_16 = [], []
for data in datas:
key = data['key']
feats = data['value']
key_bytes = key.encode('utf-8')
key_len = len(key)
length_byte = struct.pack('<B', key_len)
f.write(length_byte)
# f.write(struct.pack('Q', len(key_bytes)))
f.write(key_bytes)
value_count = len(feats)
f.write(struct.pack('I', (value_count * 256)))
# 遍历字典写入每个key及其对应的浮点数值列表
for values in feats:
# 写入每个浮点数值(保留小数点后六位)
feat16 = []
for value in values:
# 使用'f'格式单精度浮点4字节并四舍五入保留六位小数
value_half = np.float16(value)
# print(value_half.tobytes())
f.write(value_half.tobytes())
feat16.append(value_half)
feats_16.append(feat16)
feats_32.append(values)
feats16 = np.array(feats_16)
feats32 = np.array(feats_32)
print("Done")
def main_xh():
# 1. 打开JSON文件
with open(json_path, 'r', encoding='utf-8') as file:
# 2. 读取并解析JSON文件内容
data = json.load(file)
for flag, values in data.items():
# 逐个写入values中的每个值保留小数点后六位每个值占一行
write_binary_file(r"D:\DetectTracking\practice\data_.bin", values)
'''
with open('D://07Test/全实时/output.txt', 'w', encoding='utf-8') as txt_file:
for flag, values in data.items():
# 逐个写入values中的每个值保留小数点后六位每个值占一行
for value in values:
key = value['key']
feats = value['value']
# 写入key
txt_file.write(key)
txt_file.write("\n")
for feat in feats:
for number in feat:
# 使用格式化字符串保留六位小数,并写入文件
txt_file.write(f"{number:.6f} ")
txt_file.write("\n")
'''
def main_wang():
pass
if __name__ == "__main__":
main_xh()