>我有一个矢量 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());
但是,我遇到了未处理的异常错误。
使用您自己的格式以二进制模式写入数据。像这样的东西:mat_count|shape1|data1(row_first)|shape2...
std::fstream
将在文本模式或二进制模式下为您完成更难的工作。您应该尝试两者以查看最终大小。
如果你的垫子数据是类似于uint8
,uint16
,二进制模式会好得多。文本模式的问题在于,您需要为每个单个数据添加一个分隔符,这会向文件添加额外的字节。然而,文本模式可以压缩数据:"1.5"3与8字节(双倍)。
最后,如果您绝对想要文本模式下的文件,您可以在流程结束时压缩它并查看比率。