一、概念
数据持久化:程序中对象和变量的值可以被记录(序列化)到磁盘上。
二、步骤
1.数据的步骤
(1)调用构造函数FileStorage,使用FileStorage::WRITE值传递一个文件名称和一个标志,数据格式则是由文件扩展名(即.xml、.yml或.yaml)定义的;
(2)使用运算符<<将数据写入文件,数据通常被写为字符串值对;
(3)使用Release方法关闭文件。
2.读取数据的步骤
(1)调用构造函数FileStorage,使用FileStorage::READ值传递一个文件名和一个以后个标志;
(2)使用运算符[]或>>从文件中读取数据;
(3)使用Release方法关闭文件。
三、代码实现
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
Mat img1;
void tb1_Callback(int value, void *)
{
Mat temp = img1 + value;
imshow("main_win",temp);
}
int main()
{
img1 = imread("C:\\Users\\86151\\Pictures\\Camera Roll\\全智贤3.jpg",IMREAD_GRAYSCALE);
if (img1.empty())
{
cout << "Cannot load image!" << endl;
return -1;
}
int tb1_value = 0;
//加载滑动条的值
FileStorage fsl("config.xml", FileStorage::READ);
tb1_value = fsl["tb1_value"]; //读取数据tb1_value的方法1
fsl["tb1_value"] >> tb1_value;
fsl.release();
//创建滑动条
cvNamedWindow("main_win");
createTrackbar("brightness", "main_win", &tb1_value, 255, tb1_Callback);
tb1_Callback(tb1_value,NULL);
waitKey();
//退出时保存滑动条的值
FileStorage fs2("config.xml",FileStorage::WRITE);
fs2 << "tb1_value" << tb1_value;
fs2.release();
return 0;
}
四、结果展示
End & Enjoy!