opencv- FileStorage数据的读取与保存_数据

支持读写XML, YAML, JSON 格式文件,后缀名为.xml , .yml , .yaml , .json

保存数据

//cv::FileStorage(const string& source, int flags, const string& encoding=string());
//创建方式一
//cv::FileStorage fs("D:\\bb\\tt.yml", cv::FileStorage::WRITE);//创建FileStorage实例
/*
参数1:存储或读取数据的文件名(字符串)
参数2:操作模式,包括:
FileStorage::READ 打开文件进行读操作
FileStorage::WRITE 打开文件进行写操作
FileStorage::APPEND打开文件进行附加操作
FileStorage::MEMORY 从source读数据,或向内部缓存写入数据(由FileStorage::release返回)
参数3:encoding – 文件编码方式。目前不支持UTF-16 XML 编码,应使用 8-bit 编码

*/

//创建方式二
cv::FileStorage fs;
fs.open("D:\\bb\\tt.yml", cv::FileStorage::WRITE);



//保存数值
int imageWidth = 5;
int imageHeight = 10;
fs << "imageWidth" << imageWidth;
fs << "imageHeight" << imageHeight;

//保存矩阵
cv::Mat m1 = cv::Mat::eye(3, 3, CV_8U);
fs << "m1" << m1;

bool b = fs.isOpened(); //文件是否打开
//ture – 如果对象关联了当前文件;false – 其他情况
std::cerr << b << std::endl;

fs.release();

opencv- FileStorage数据的读取与保存_打开文件_02

读取数据 

cv::FileStorage fs;
fs.open("D:\\bb\\tt.yml", cv::FileStorage::READ);

//读取普通数据
int width;
int height;
fs["imageWidth"] >> width;//读取映射名为imageWidth的数据赋值给width
fs["imageHeight"] >> height;
std::cout << "width readed = " << width << std::endl;
std::cout << "height readed = " << height << std::endl;

//读取矩阵
cv::Mat resultMatRead;
fs["m1"] >> resultMatRead;//读取映射名为m1的矩阵赋值给resultMatRead
std::cerr << resultMatRead << std::endl;

fs.release();

opencv- FileStorage数据的读取与保存_数据_03