2013-09-18 5 views
2

С OpenCV я хочу найти ключевые точки на разных изображениях и сохранить их на своем жестком диске. Это очень хорошо работает для спасительной части. Для сохранения ключевых точек, которые я использую:Прочтите файл yml с помощью OpenCV

Mat it; 
it = imread("pic1.jpg", IMREAD_GRAYSCALE); 
vector<KeyPoint> keypoints; 
detector.detect((it), keypoints); 
FileStorage fs("keypoint1.yml", FileStorage::WRITE); 
write(fs , "keypoint", keypoints); 
fs.release(); 

Когда я пытаюсь прочитать файл снова:

vector<KeyPoint> keypoint1s; 
FileStorage fs2("keypoint1.yml", FileStorage::READ); 
FileNode kptFileNode = fs2["keypoint1"]; 
read(kptFileNode, keypoint1s); 
fs2.release(); 

Если я делаю это так, «keypoint1s» пусто. Что не так?

ответ

5

Ваше имя переменной неправильно при чтении:

FileNode kptFileNode = fs2["keypoint1"]; 

должен быть

FileNode kptFileNode = fs2["keypoint"]; 

Это работает для меня:

vector<int> keypoints; 
keypoints.push_back(1); 
keypoints.push_back(2); 

FileStorage fs("keypoint1.yml", FileStorage::WRITE); 
write(fs , "keypoint", keypoints); 
fs.release(); 

vector<int> newKeypoints; 
FileStorage fs2("keypoint1.yml", FileStorage::READ); 
FileNode kptFileNode = fs2["keypoint"]; 
read(kptFileNode, newKeypoints); 
fs2.release(); 
+0

Спасибо! и извините, полностью контролировал это. – user2746420

Смежные вопросы