在txt的传染媒介席子

时间:2014-02-24 08:10:17

标签: c++ opencv vector mat

我有一个矢量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());

但是,我得到了未处理的异常错误。

1 个答案:

答案 0 :(得分:1)

使用您自己的格式以二进制模式写入数据。类似于:mat_count|shape1|data1(row_first)|shape2...

std::fstream将在文本模式或二进制模式下为您完成更艰巨的工作。您应该尝试两者来查看最终大小。

如果您的Mat数据类似于uint8uint16,则二进制模式会更好。文本模式的问题在于,您需要为每个数据添加一个分隔符,以便为文件添加额外的字节。但是文本模式可以压缩数据:“1.5”3对8字节(双倍)。

最后,如果你想在文本模式下绝对是一个文件,你可以在流程结束时压缩它并查看比率。