【问题标题】:OpenCV saving image, keypoints and descriptors to fileOpenCV 将图像、关键点和描述符保存到文件
【发布时间】:2014-01-28 12:58:31
【问题描述】:

我正在使用 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 );

【问题讨论】:

    标签: c++ opencv image-processing surf flann


    【解决方案1】:

    你必须一次写一个:

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

    【讨论】:

      【解决方案2】:

      我们要一个一个地写出关键点和描述符

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-15
        • 2012-05-12
        相关资源
        最近更新 更多