如何在不使用任何外部库(matio 等)或 API 的情况下读取 C++ 中的 .mat 文件?
我知道文件里面有什么:
我尝试使用 fstream 执行此操作,但输出不正确(我确信该文件不是问题,因为我已在 MATLAB 中检查了它。)
std::ifstream file("file.mat", std::binary);
if (!file.is_open()){
std::cerr << "error opening the file" << std::endl;
return 1;
}
file.seekg(2665452);
cv::Mat img1(512,640, CV_64F);
file.read( reinterpret_cast<char*> (img1.data),2621440);
file.close();
cv::Mat img1P;
img1.convertTo(img1P,CV_8U);
cv.imwrite("img1P.png",img1P);
“文件内部”不仅仅是与这三个对象相对应的字节,而是 MAT 文件的标准结构和数据,以及序列化为 MAT 文件格式引发的形式的这些对象。如果您不想使用解析 MAT 文件的外部库,那么您将需要编写自己的 MAT 文件解析器。 MAT 文件格式的描述位于here。制作 MAT 文件解析器将是一个漫长且复杂的过程。