IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]OpenCV 读取 CSV 数据文件

    bendanban发表于 2016-06-17 19:48:02
    love 0

    简介

    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;
    }


沪ICP备19023445号-2号
友情链接