支持讀寫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();