Asercja debugowania nie powiodła się Wyrażenie: _pFirstBlock == pHead za pomocą OpenCV i C ++ próbuje wywołać SurfFeatureDetector

Mam tę funkcję w C ++ przy użyciu OpenCV:

vector<KeyPoint> test(Mat img)
{
  int minHessian = 400;
  SurfFeatureDetector detector( minHessian );

  vector<KeyPoint> vKeypoints;
  detector.detect( img, vKeypoints );

  return vKeypoints;
}

Gdy wywołam tę funkcję w mojej metodzie głównej, wszystko działa dobrze.

int main( int, char** argv )
{
    // path to a image-file
    char* input = "image.jpg";

    // read image into Mat img
    Mat img = imread( input, CV_LOAD_IMAGE_GRAYSCALE );

    // call function test
    test(img);

    waitKey(0);
    return 0;
}

Ale jak tylko dwukrotnie wywołam tę metodę ...

int main( int, char** argv )
{
    // path to a image-file
    char* input = "image.jpg";

    // read image into Mat img
    Mat img = imread( input, CV_LOAD_IMAGE_GRAYSCALE );

    // call function test
    test(img);
    test(img); // <-- !!! second call

    waitKey(0);
    return 0;
}

... Otrzymuję następujący błąd:

Czy ktoś może mi powiedzieć, gdzie jest mój błąd i jak mogę to naprawić? Muszę wywołać tę funkcję dwa razy z dwoma różnymi obrazami, ale za każdym razem, gdy to robię, otrzymuję ten błąd.

Używam Visual Studio 2012.

questionAnswers(3)

yourAnswerToTheQuestion