OpenCV сохраняет изображение, ключевые точки и дескрипторы в файл

Я использую детектор SURF / FLANN, и я хочу сохранить изображение, точки, дескрипторы в файл, чтобы я мог затем сравнить это изображение, и оно указывает на второе изображение и точки, однако, когда я получаю, я получаю следующую ошибку попробуйте написать:

In file included from detectFlannPoints.cpp:4:0:
/usr/local/include/opencv2/features2d/features2d.hpp:112:17: note: void cv::write(cv::FileStorage&, const string&, const std::vector<cv::KeyPoint>&)
/usr/local/include/opencv2/features2d/features2d.hpp:112:17: note:   candidate expects 3 arguments, 4 provided

Это код, который я использую для написания:

  FileStorage fs("Keypoints.yml", FileStorage::WRITE);
write(fs, "templateImageOne", keypoints_1, tempDescriptors_1);
fs.release();

Я не уверен, где я могу указать дополнительный аргумент (tempDescriptors_1) как это работает нормально с этим удаленным аргументом.

Код сразу над кодом записи:

  //Detect the keypoints using SURF Detector
int minHessian = 400;
SurfFeatureDetector detector( minHessian );
std::vector<KeyPoint> keypoints_1;
detector.detect( img_1, keypoints_1 );
//-- Step 2: Calculate descriptors (feature vectors)
SurfDescriptorExtractor extractor;
Mat tempDescriptors_1;
extractor.compute( img_1, keypoints_1, tempDescriptors_1 );
//-- Draw keypoints
Mat img_keypoints_1;
drawKeypoints( img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT );

3

Решение

Вы должны написать их по одному:

FileStorage fs("Keypoints.yml", FileStorage::WRITE);
write(fs, "keypoints_1", keypoints_1);
write(fs, "descriptors_1", tempDescriptors_1);
...
fs.release();
6

Другие решения

Мы должны написать ключевые точки и дескрипторы один за другим

FileStorage fs("Keypoints.yml", FileStorage::WRITE);
write(fs, "templateImageOne_Keypoint", keypoints_1);
write(fs, "templateImageOne_descriptor", tempDescriptors_1);
fs.release();
-1

По вопросам рекламы [email protected]