支持读写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();
读取数据
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();