OpenCV对csv文件的读写操作
2016-03-22 10:08
761 查看
在用opencv进行图片操作时,经常涉及到对矩阵的操作。由于本人常需要把矩阵进行本地保存和读取,如果直接用文件操作会比较麻烦,本文总结了以下对csv文件进行读写的操作。
http://docs.opencv.org/2.4/modules/ml/doc/mldata.html?highlight=cvmldata#cvmldata-read-csv
使用示例:
通过以上三行代码就可以把cvs文件中的矩阵读取到data矩阵中。注意,最后一行代码用cv::Mat()就行转换是因为CvMLData::get_values()返回的是CvMat类型的矩阵。
该函数有两个参数,一个是将保存的Mat矩阵,一个是保存的文件名。如要保存上面的data矩阵为data.csv文件,则可以使用saveMat(data,”data.csv”)。
通过以上两种方式就可以轻松对opencv中的Mat矩阵进行读取和保存了。
1.读取CVS文件
opencv中的CvMLData可以实现对csv文件的读取,注意CvMLData包含在ml.h头文件中,所以需要添加#include “ml.h”采用使用。 CvMLData类的官方API介绍如下链接http://docs.opencv.org/2.4/modules/ml/doc/mldata.html?highlight=cvmldata#cvmldata-read-csv
使用示例:
CvMLData mlData; mlData.read_csv("test.csv");//读取csv文件 cv::Mat data= cv::Mat(mlData.get_values(),true);
通过以上三行代码就可以把cvs文件中的矩阵读取到data矩阵中。注意,最后一行代码用cv::Mat()就行转换是因为CvMLData::get_values()返回的是CvMat类型的矩阵。
2.保存cv::Mat矩阵为csv文件
opencv可以通过CvMLData来读取csv文件,但是遗憾的是opencv不能直接把Mat矩阵存储为csv文件。鉴于此本人自己写了一个保存Mat矩阵为csv文件的函数。代码如下void saveMat(cv::Mat inputMat,char* filename) { 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); }
该函数有两个参数,一个是将保存的Mat矩阵,一个是保存的文件名。如要保存上面的data矩阵为data.csv文件,则可以使用saveMat(data,”data.csv”)。
通过以上两种方式就可以轻松对opencv中的Mat矩阵进行读取和保存了。
相关文章推荐
- shell输出不换行符合换行符
- Centos 6.5安装最新版谷歌浏览器-Chrome
- mac上openssl无法找到
- php获取Linux网卡信息
- centos 6.5 设置屏幕保护
- 持续集成 Tomcat + Jenkins + ANT + SVN + Selenium ---2016
- docker 配置桥接网络
- docker 配置桥接网络
- docker 配置桥接网络
- Linux连接Microsoft SQL Server数据库
- Nginx作为反向代理服务器,多个不同项目共用80端口(转载)
- Linux环境使用Python连接Microsoft SQL Server
- 系统运维
- linux软链接ln命令的用法
- Linux环境变量配置的三个方法--/etc/profile,~/.bashrc,shell
- linux系统下tomcat的启动
- Ubuntu配置了Open vSwitch(OVS),重启后无法无法重启OVS daemon
- TOMCAT内存溢出及大小调整
- CentOS6.5解决中文乱码与设置字符集
- Shell 命令实现词频统计