Debug Assertion Failed trying to call SurfFeatureDetector

asked 2014-01-22 06:06:00 -0500

CurlyB gravatar image

I have this function in C++:

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

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

  return vKeypoints;
}

When I call this function in my main-method everything works fine.

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

But as soon as I'm calling this method twice...

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

...I get the following error:

image description

Can anyone tell me where my mistake is and how I could fix this? I need to call this function twice with two different images, but every time I do this I get this error.

I'm using Visual Studio 2012.

I already asked this question on stackoverflow: http://stackoverflow.com/questions/21261709/debug-assertion-failed-expression-pfirstblock-phead-using-opencv-and-c-tr

edit retag flag offensive close merge delete

Comments

First, always check your image is loading correctly. I usually do assert(img.data);

Nghia gravatar imageNghia ( 2014-01-22 06:10:56 -0500 )edit

I've added the line assert(img.data), but the error stays the same.

CurlyB gravatar imageCurlyB ( 2014-01-22 06:48:48 -0500 )edit

Does it make a difference if you compile in release or debug mode?

Nghia gravatar imageNghia ( 2014-01-22 22:37:41 -0500 )edit

No, it still doesn't work, but thanks so far. Have you any other suggestions?

CurlyB gravatar imageCurlyB ( 2014-01-23 00:49:45 -0500 )edit

I've found my mistake. I accidentally copied the openCV-dlls of the VC12 folder, because I forgot that Visual Studio 2012 is VC11. Now it works. Maybe this will help someone else who has the same problem and copied the dlls of the wrong folder.

CurlyB gravatar imageCurlyB ( 2014-01-23 01:01:01 -0500 )edit