我需要找到并匹配立体图像中的特征点。因此,我想比较OpenCV 2.4.5支持的不同功能检测算法。通过将“SURF”,“SIFT”等传递给函数。

代码段:

#include "opencv2/opencv.hpp"
#include <opencv/highgui.h>
#include <opencv2/nonfree/features2d.hpp>

using namespace cv;
using namespace std;

...

void DisparityAnalysis::detectKeyPoints(Mat1b leftImageGrey, Mat1b rightImageGrey, string algorithmName)
{
    Ptr<FeatureDetector> detector = FeatureDetector::create(algorithmName);
    detector->detect(leftImageGrey, keypoints_1);
    detector->detect(rightImageGrey, keypoints_2);
}

错误:
Unhandled exception at 0x770b15de in DisparityAnalysis.exe: 0xC0000005: Access violation reading location 0x00000000.

我已经搜索了解决方案并找到了以下解决方案:Access violation reading in FeatureDetector OpenCV 2.4.5我认识到的区别是,它们在开始时使用cv::initModule_nonfree()。但是,当将其复制到我的代码中时,由于找不到标识符,因此无法编译。
有什么建议?

最佳答案

对于SIFT和SURF,您将需要nonfree模块,即:

  • 包括“opencv2/nonfree/nonfree.hpp”
  • 在开头
  • 处调用cv::initModule_nonfree()
    反对opencv_nonfree2.4.x.lib的
  • 链接
  • 09-16 18:53