我不确定你真正期望的是什么:我提供的代码只是一个例子,展示了文件存储在OpenCV C++绑定中的工作原理.它假定您在XML文件中单独写入所有关键点,其名称是它们在存储的向量中的位置.
它假设当你读回它们时,你知道它们想要读取它们的数量,如果没有,代码会更复杂一些.你会找到一种方法(例如,如果你阅读文件存储并测试它给你的东西,如果它没有给你什么,那么这意味着没有更多的要点阅读) - 这只是一个想法,你必须找到解决方案,也许这段代码就足够了.我应该确切地说,我使用ostringstream将整数放入字符串中,并通过改变它将在*.yml文件中写入的位置.
//TO WRITE
vector<Keypoint> myKpVec;
FileStorage fs(filename,FileStorage::WRITE);
ostringstream oss;
for(size_t i;i<myKpVec.size();++i) {
oss << i;
fs << oss.str() << myKpVec[i];
}
fs.release();
//TO READ
vector<Keypoint> myKpVec;
FileStorage fs(filename,FileStorage::READ);
ostringstream oss;
Keypoint aKeypoint;
for(size_t i;i<myKpVec.size();<++i) {
oss << i;
fs[oss.str()] >> aKeypoint;
myKpVec.push_back(aKeypoint);
}
fs.release();
Run Code Online (Sandbox Code Playgroud)
朱利安,
char* key;
FileStorage f;
vector<Keypoint> keypoints;
//writing
write(f, key, keypoints);
//reading
read(f[key], keypoints);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9454 次 |
| 最近记录: |