Index: src/cv/cvsurf.cpp =================================================================== --- src/cv/cvsurf.cpp (version 3030) +++ src/cv/cvsurf.cpp (working copy) @@ -724,6 +724,13 @@ } N = keypoints->total; + + if ( N == 0 ) + { + // no key points found; nothing to do + return; + } + if( _descriptors ) { descriptors = cvCreateSeq( 0, sizeof(CvSeq), @@ -844,6 +851,13 @@ MemStorage storage(cvCreateMemStorage(0)); Seq kp; cvExtractSURF(&_img, pmask, &kp.seq, 0, storage, *(const CvSURFParams*)this, 0); + + if ( kp.empty() ) + { + // no key points + return; + } + Seq::iterator it = kp.begin(); size_t i, n = kp.size(); keypoints.resize(n); @@ -880,6 +894,13 @@ cvExtractSURF(&_img, pmask, &kp.seq, &d, storage, *(const CvSURFParams*)this, useProvidedKeypoints); + + if ( kp.empty() ) + { + // no key points + return; + } + if( !useProvidedKeypoints ) { Seq::iterator it = kp.begin();