خوب فرقی نداره شما به راحتی می تونید با جایگزین کردن Rect به جای Data این کار را انجام بدید در ضمن خود opencv نوع cv::Rect را serialize و deserilize می کنه. کد لینک مربوط را به صورت زیر تغییر دادم.
void loadData(const cv::FileStorage& fs,std::vector<cv::Rect>& datas) {
cv::FileNode data_nodes = fs["datas"];
for (auto it = data_nodes .begin(); it != data_nodes.end(); it++) {
cv::Rect cur_node;
(*it)] >> cur_node;
datas.push_back(cur_node);
}
fs.release();
}
void saveData(cv::FileStorage& fs,const std::vector<cv::Rect>& datas)
{
fs << "datas" << "[";
auto it = datas.begin();
for (int i = 0; i < datas.size(); i++) {
fs << data[i];
it++;
}
fs << "]";
fs.release();
}
void load(const std::string& file_name){
cv::FileStorage fs(file_name, cv::FileStorage::READ);
std::vector<cv::Rect> datas;
loadData(fs,datas);
fs.release();
}
void save(const std::string& file_name){
cv::FileStorage fs(file_name, cv::FileStorage::WRITE);
std::vector<cv::Rect> datas;
saveData(fs,datas);
fs.release();
}