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);

 

posted @ 2024-09-21 13:01  silence_cho  阅读(49)  评论(0)    收藏  举报