一、概念
數據持久化:程序中對象和變量的值可以被記錄(序列化)到磁盤上。
二、步驟
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!