Usando FeatureDetector no OpenCV dá violação de acesso

Eu preciso encontrar e combinar pontos de recurso em imagens estéreo. Portanto, quero comparar os diferentes algoritmos de detecção de recursos que são suportados no OpenCV 2.4.5. passando "SURF", "SIFT", etc. para a função.

O trecho de código:

#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);
}

O erro:

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

Eu já pesquisei soluções e encontrei esta:Leitura de violação de acesso no FeatureDetector OpenCV 2.4.5 A diferença que eu reconheci é que eles usam cv :: initModule_nonfree () no começo. Mas ao copiá-lo para o meu código, ele não compila porque o identificador não é encontrado. Alguma sugestão?

questionAnswers(1)

yourAnswerToTheQuestion