功能:将一个对象保存到一个文件。
函数形式:
void cvSave
(
const char * filename,
const void * struct_ptr,
const char * name = NULL,
const char * comment = NULL,
CvAttrList attributes = cvAttrList()
)
参数列表:
filename :文件的名字及路径。
struct_ptr:要保存的对象,该对象指向的值必须是常量。const void *struct_ptr定义了一个指针struct_ptr,struct_ptr可以指向任意类型的值,但它指向的值必须是常量。
name:用于给所保存的对象的元素节点命名,默认为NULL,名称自动由文件名形成。 XML文档中的每个成分都是一个节点。每个 XML标签是一个元素节点,包含在 XML元素中的文本内容是文本节点。cvSave将对象保存在文本节点中,文本节点包含在元素节点下,name参数用于给该元素节点命名。
comment:用于给元素节点注释,写在元素节点之前。不需要注释时则令它为NULL。
attributes:传递给cvWrite的额外的参数,用于定义对象的属性。默认为NULL。
程序应用示例:
#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;
}
输出结果: