CSV格式的文件可以用来保存在存储数据。此文提供一段代码用于读取CSV文件数据到Mat中。
注意,在实际应用中,应该事先知道CSV存储的单个数据的类型。所以在读取到Mat之后,要转换成自己了解实际使用的数据。
#include <string>
using namespace std;
#include <opencv2/opencv.hpp>
using namespace cv;
int read_csv(cv::Mat &csvm, string csv_name, char dlm = ','){
CvMLData tper;
tper.set_delimiter(dlm);
int r = tper.read_csv(csv_name.c_str());
if (r != 0)
return r;
csvm = cv::Mat(tper.get_values(), true);
return r;
}
测试用csv文件,不妨命名为test.csv
1,2,3
4,5,6
7,8,9
测试代码如下:
cv::Mat csv_mat;
read_csv(csv_mat, "test.csv");
cout << csv_mat << endl;
输出结果如下:
[12, 13, 14;
23, 45, 67;
23, 45, 67]
为方便大家,全部测试代码如下:
#include <iostream>
#include <string>
using namespace std;
#include <opencv2/opencv.hpp>
using namespace cv;
int read_csv(cv::Mat &csvm, string csv_name, char dlm = ','){
CvMLData tper;
tper.set_delimiter(dlm);
int r = tper.read_csv(csv_name.c_str());
if (r != 0)
return r;
csvm = Mat(tper.get_values(), true);
return r;
}
int main(int argc, char** argv){
cv::Mat csv_mat;
read_csv(csv_mat, "test.csv");
cout << csv_mat << endl;
return EXIT_SUCCESS;
}