练习:使用cvSave和cvLoad实现矩阵的存储和读入
#include "cv.h"
#include "cxcore.h"
#include "stdio.h"
int main()
{
float val[]={1,2,3, 4,5,6,7,8,9};//首先定义好待存入矩阵的数据
CvMat A=cvMat(3,3,CV_32FC1,val);//创建一个32为浮点数,单通道矩阵
cvSave("my_matrix.xml",&A); //保存矩阵元素为xml
CvMat *Al=(CvMat *)cvLoad("my_matrix.xml");
for(int i=0;i<Al->rows;i++) //显示矩阵元素
{
//首先获得指向矩阵数组的每行数据的指针ptr
const float *ptr=(float *)(Al->data.ptr+i*Al->step);
for(int j=0;j<Al->cols;j++) //通过ptr指针,依次取出矩阵元素
printf("%.f ",*ptr++);
}
return 0;
}
xml文件如下:
从上图可以看出矩阵元素已经存入到xml文件中去。
在VC窗口中打印的矩阵元素如下:
对比发现,使用cvSave和cvLoad函数成功的实现了CvMat矩阵的存储和读取。