OpenCV學習筆記:使用數據持久化保存與加載滑動條的值

一、概念

數據持久化:程序中對象和變量的值可以被記錄(序列化)到磁盤上。

二、步驟

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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章