// Write matrix to binary file
bool Objectness::matWrite(CStr& filename, CMat& _M){
Mat M;
_M.copyTo(M);
FILE* file = fopen(_S(filename), "wb");
if (file == NULL || M.empty())
return false;
fwrite("CmMat", sizeof(char), 5, file);
int headData[3] = {M.cols, M.rows, M.type()};
fwrite(headData, sizeof(int), 3, file);
fwrite(M.data, sizeof(char), M.step * M.rows, file);
fclose(file);
return true;
}
// Read matrix from binary file
bool Objectness::matRead(const string& filename, Mat& _M){
FILE* f = fopen(_S(filename), "rb");
if (f == NULL)
return false;
char buf[8];
int pre = fread(buf,sizeof(char), 5, f);
if (strncmp(buf, "CmMat", 5) != 0) {
printf("Invalidate CvMat data file %s\n", _S(filename));
return false;
}
int headData[3]; // Width, height, type
fread(headData, sizeof(int), 3, f);
Mat M(headData[1], headData[0], headData[2]);
fread(M.data, sizeof(char), M.step * M.rows, f);
fclose(f);
M.copyTo(_M);
return true;
}
Mat 数据类型保存为二进制文件
最新推荐文章于 2023-07-18 11:02:51 发布