将matlab的矩阵保存为TXT,并用opencv读取,然后保存为Mat类型
做图像分类,matlab提取的特征用于训练和测试神经网络,想要用opencv打开,想了非常久,自己都没有做出来,刚开始想用
xml 文档作为介质进行传输,发现比较困难,网上的方法试了试没有成功,请来了一个大神师兄,不得不佩服,几分钟用txt给我搞定了。以前,我总是想把mat保存为图片,这样不管是matlab还是opencv,均可以方便的进行数据传递,这个想法是可以的,但是只能针对整形数据,矩阵中如果出现了小数或者负数,那么在保存为图片时候像素值将会自动映射为整数,再次读取元素值也就发生了变化。因此保存为xml或者txt,才是正确的方法,首先将matlab矩阵保存为txt(比较简单,保存xml貌似非常麻烦),代码如下:
save 矩阵名字.txt 要保存的矩阵 -ASCII
上述代码即可将矩阵保存为TXT文档,注意后面的 -ascii不可以省略。
下面是opencv读取并赋值给一个矩阵的代码:
#include<opencv2\opencv.hpp>
#include<cv.h>
#include<fstream>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
fstream file;
file.open("C:\\Users\\andy\\Documents\\MATLAB\\DataSet.txt");
Mat TrainData=Mat::zeros(70,213,CV_32FC1);
for (int i = 0; i < 70; i++)
{
for (int j = 0; j < 213; j++)
{
file>>TrainData.at<float>(i,j);
}
}
cout<<TrainData<<endl;
waitKey(0);
}