我有一个矢量Mat文件,我想将其存储在txt文件中。每个mat文件的大小都是1x4500,我总共有5000个向量。我尝试使用上面的代码存储在txtfile中:
void writeMatToFile(cv::Mat& m, const char* filename){
ofstream fout(filename);
for(int i=0; i<m.rows; i++){
for(int j=0; j<m.cols; j++){
fout<<m.at<float>(i,j)<<"\t";
}
fout<<endl;
}
fout.close();
}
主要:
string file = "output.txt";
writeMatToFile(image,file.c_str());
但是,我得到了未处理的异常错误。
答案 0 :(得分:1)
使用您自己的格式以二进制模式写入数据。类似于:mat_count|shape1|data1(row_first)|shape2...
std::fstream
将在文本模式或二进制模式下为您完成更艰巨的工作。您应该尝试两者来查看最终大小。
如果您的Mat数据类似于uint8
,uint16
,则二进制模式会更好。文本模式的问题在于,您需要为每个数据添加一个分隔符,以便为文件添加额外的字节。但是文本模式可以压缩数据:“1.5”3对8字节(双倍)。
最后,如果你想在文本模式下绝对是一个文件,你可以在流程结束时压缩它并查看比率。