最近在做机器学习方面的项目,经常涉及到将矩阵数据存储在表格中,然后又将表格中的数据读取进程序的操作,在网上找过一些相关的代码,将Mat矩阵保存到CSV文件中,然后再将CSV文件中的表格数据读取为Mat类型的数据,但是大多数代码比较复杂,而且不易理解,这里将目前用到的最简单的Mat与CSV相互转换的代码分享一下,同时以备后用。
1.将opencv的Mat类型保存到CSV文件中
void saveMat(cv::Mat inputMat,char* filename)//将mat矩阵保存到CSV文件中
{
FILE* fpt = fopen(filename,"w");
int rows = inputMat.rows;
int clos = inputMat.cols;
for (int i = 0; i < rows;i++)
{
for(int j = 0;j<clos;j++)
{
if (j < clos-1)
fprintf(fpt,"%f,",inputMat.at<float>(i,j));
else
fprintf(fpt,"%f\n",inputMat.at<float>(i,j));
}
}
fclose(fpt);
}
2.将CSV文件读取为Mat类型
这里主要用到了opencv中的机器学习模块用于处理数据的一个函数read_csv(),这个函数是CvMLData的一个函数,通过它可以很容易地将CSV文件读取进来。
// returns:
// 0