csvファイル( , カンマ区切り、改行あり)からデータを読み込む。
ついでにopencvのMatにデータをぶち込む。
"filename1.csv", "filename2.csv", .... , みたいな感じの連続番号を振ったCSVファイルをループ文で読み込む
while(1){
read_csv(i);
++i;
}
みたいな感じ。
int read_csv(int counter) //ループのカウンター値を受け取る→連続したファイルを読み込む
{
//ファイル名の指定
char name[256];
sprintf_s(name, 256, "ファイル名%d.csv", counter); //連続番号付けしたファイルを読み込む
std::ifstream read_data(name);
//エラー処理
if (!read_data) {
std::cout << "Error:Input data file not found" << std::endl;
return -1;
}
double *data = new double[height*width](); //0で初期化
//heightとwidthは定数、ここでは定義は省略している
int i = 0;
std::string str;
while (getline(read_data, str)){
string token;
stringstream ss;
istringstream stream(str);
while (getline(stream, token, ',')) { // 区切り文字は ,カンマ
// 文字列から数値に変換
ss << token;
ss >> data[i];
++i;
ss.clear(); // 状態をクリア.
ss.str(""); // 文字列をクリア.
}
}
cv::Mat mat_data(height, width, CV_64FC1, data); //csvから読み込んだデータをcv::Matにぶち込む
return 0;
}
インクルードするのはたしかこれら
#include <fstream>
#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>
参考:
http://fa11enprince.hatenablog.com/entry/2014/04/03/233500
http://99blues.dyndns.org/blog/2010/02/std_stringstream/
http://ppp-lab.sakura.ne.jp/cpp/library/032.html
http://handasse.blogspot.com/2007/06/c_22.html
0 件のコメント:
コメントを投稿