ذخیره سازی و بازیابی FileStorage در OpenCV - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ذخیره سازی و بازیابی FileStorage در OpenCV

0 امتیاز

سلام.

ساختار زیر را ببینید:

struct Data{
int x;
int y;
};
std::vector<Data> Datas;

 

قصد دارم این ساختار را در فایل yml ذخیره کنم.چند بار سعی کردم ولی هنگام لو فایل به خطا مواجه میشه .دنبال شکل صحیح خواند و نوشتن همچین چیزی هستم.

سوال شده فروردین 23, 1396  بوسیله ی حبیب کاظمی (امتیاز 103)   7 12 15

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

داده های struct را داخل {} قرار دهید.

داده های vector را داخل [] قرار دخید.

void loadData(const cv::FileStorage& fs,std::vector<Data>& datas) {


	cv::FileNode data_nodes = fs["datas"];
	
	for (auto it = data_nodes .begin(); it != data_nodes.end(); it++) {
                Data cur_node;
		(*it)["x"] >> cur_node.x;
		(*it)["y"] >> cur_node.y;
		Datas.push_back(cur_node);
	}

	fs.release();

}

void saveData(cv::FileStorage& fs,const std::vector<Data>& datas)
{

	fs << "datas" << "[";
	auto it = datas.begin();
	for (int i = 0; i < datas.size(); i++) {

		fs << "{" << "x" << data[i].x << "y" << data[i].y << "}";
		it++;
	}

	fs << "]";


	fs.release();

}

void load(const std::string& file_name){
   cv::FileStorage fs(file_name, cv::FileStorage::READ);
   std::vector<Data> datas;
   loadData(fs,datas);
   fs.release();

}

void save(const std::string& file_name){
   cv::FileStorage fs(file_name, cv::FileStorage::WRITE);
   std::vector<Data> datas;
   saveData(fs,datas);
   fs.release();
}

 

پاسخ داده شده اردیبهشت 6, 1396 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد خرداد 15, 1396 بوسیله ی حبیب کاظمی
...