Я не уверен в том, что вы действительно ожидаете: код, который я вам предоставляю, является просто примером, показывающим, как работает хранилище файлов в привязках 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();
Julien,