Die Verwendung von FeatureDetector in OpenCV führt zu einer Zugriffsverletzung

Ich muss Feature Points in Stereobildern finden und zuordnen. Aus diesem Grund möchte ich die verschiedenen Feature Detection-Algorithmen vergleichen, die in OpenCV 2.4.5 unterstützt werden. indem Sie "SURF", "SIFT" usw. an die Funktion übergeben.

Das Code-Snippet:

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

Der Fehler:

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

Ich habe bereits nach Lösungen gesucht und diese gefunden:Lesen von Zugriffsverletzungen in FeatureDetector OpenCV 2.4.5 Der Unterschied, den ich erkannt habe, ist, dass sie am Anfang cv :: initModule_nonfree () verwenden. Aber wenn ich es in meinen Code kopiere, wird es nicht kompiliert, weil die Kennung nicht gefunden wird. Irgendwelche Vorschläge?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage