c++和python数据对比
python数据存储为二进制
# 存二进制float32的数据
bin_npy = np.arange(12).reshape((2, 2, 3)).astype(np.float32) bin_npy.tofile(r"mycpp\test.bin")
# 读取二进制float32数据 t = np.fromfile(r"mycpp\test.bin", dtype=np.float32) print(t.shape)
c++ 读取二进制float数据
vector<unsigned char> load_file(const string& file){ ifstream in(file, ios::in | ios::binary); if (!in.is_open()) return {}; in.seekg(0, ios::end); size_t length = in.tellg(); std::vector<uint8_t> data; if (length > 0){ in.seekg(0, ios::beg); data.resize(length); in.read((char*)&data[0], length); } in.close(); return data; }
std::string binFile = "./test.bin";
auto output = load_file(binFile);
float* output_data_host = reinterpret_cast<float*>(output.data());
c++ 存储二进制float数据
void save_file(const std::string outfile, float* data, size_t st){ std::ofstream f(outfile, std::ios::binary); if(f.is_open()){ f.write(reinterpret_cast<const char*>(data), st*sizeof(float)); std::cout << "Data saved successfully." << std::endl; } } float* blob; blob = blobFromImage(pr_img); size_t st = pr_img.total()*3; save_file("../input_img_new.bin", blob, st);

浙公网安备 33010602011771号