1.写入:opencv mat(float型)存为bin
std::ofstream fout1("E:/data/flowu_2486x1856.bin", std::ios::binary | std::ios::trunc);
Mat flowU = Mat::zeros(2486, 1856, CV_32FC1);
for (int i = 0; i < flowU.h; i++)
{
for (int j = 0; j < flowU.w; j++)
{
fout1.write(reinterpret_cast<char*>(&flowU.at<float>(i, j)), sizeof(float));
}
}
fout1.close();
2.读取bin到opencv mat(float型)中
FILE* fp = fopen("E:/data/flowu_2486x1856.bin", "rb");
Mat flowU = Mat::zeros(2486, 1856, CV_32FC1);
for (int i = 0; i < 1856; i++)
{
for (int j = 0; j < 2486; j++)
{
fread(&flowU.at<float>(i, j), 1, sizeof(float), fp);
}
}
fclose(fp);
fp = NULL;
fopen函数参数的设置,可参考
"r" | 打开一个用于读取的文件。该文件必须存在。 |
"w" | 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。 |
"a" | 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。 |
"r+" | 打开一个用于更新的文件,可读取也可写入。该文件必须存在。 |
"w+" | 创建一个用于读写的空文件。 |
"a+" | 打开一个用于读取和追加的文件。 |
3、写入的另一种方式
FILE* fp3 = fopen("E:/t.txt", "a+");
fwrite(__DATE__, sizeof(__DATE__), 1, fp3);
fwrite("\n", 1, 1, fp3);//换行命令
fclose(fp3);
4、写入的另一种方式
FILE* fp3 = fopen("E:/t.txt", "a+");
fprintf(fp3,"%s",__DATE__);
fclose(fp3);