C++におけるMatタイプとCSV、xmlファイルのアクセス変換
最近機械の学習の方面のプロジェクトをして、いつもマトリックスのデータを表の中で保存することに関連して、それからまた表の中のデータをプログラムの操作に読み込んで、ネット上でいくつか関連するコードを探したことがあって、Mat行列をCSVファイルの中で保存して、それからCSVファイルの中の表のデータをMatタイプのデータに読み込んで、しかし大多数のコードは比較的に複雑で、また、ここでは、現在使用されている最も簡単なMatとCSVを変換するコードを共有し、後で使用するために使用します.
1.OpencvのMatタイプをCSVファイルに保存する
2.CSVファイルをMatタイプとして読み込む
ここでは主にopencvの機械学習モジュールを用いてデータを処理する関数read_を用いた.csv()は、CvMLDataの関数で、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(i,j));
else
fprintf(fpt,"%f
",inputMat.at(i,j));
}
}
fclose(fpt);
}
2.CSVファイルをMatタイプとして読み込む
ここでは主にopencvの機械学習モジュールを用いてデータを処理する関数read_を用いた.csv()は、CvMLDataの関数で、CSVファイルを簡単に読み込むことができます.
// returns:
// 0 - OK
// -1 - file can not be opened or is not correct
int read_csv( const char* filename );
CSV Mat :
CvMLData mlData;
mlData.read_csv("test.csv");// csv
const CvMat* A;
A=mlData.get_values();
Mat data= Mat(A,true);
data Mat 。
CvMLData ml.h , ml.h 。 ,opencv ml opencv2 opencv3 ,2 opencv CvMLData ,opencv3 , opencv3 Data,
TrainData::loadFromCSV(file_name, headlinecont); , ml.h 。
3. xml Mat
CSV , CSV , CSV , , Mat xml CSV 。
Mat img_mat;
FileStorage fs("test.xml", FileStorage::WRITE);
fs<
FileStorage fsr("test.xml", FileStorage::READ);
Mat mat_vocabulary;
fsr["vocabulary"] >> mat_vocabulary;
fsr.release();
CSV , xml excel , , ,
。