У меня была такая же проблема (или, по крайней мере, похожая) с этой функцией.Я не смог это исправить, поэтому вместо этого я использовал старую функцию cvFindContours в стиле C.Я включил пример функции, в которой я использовал функцию cvFindContours для очистки изображения BLOB-объекта.Возможно, это не самое быстрое решение, но, как минимум, оно работает.
void filtBproject(Mat& Bproject){
Scalar color = CV_RGB(255,255,255); // text color
IplImage* BprojectIpl = &IplImage(Bproject);
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* contours = 0;
int numCont = 0;
int contAthresh = 45;
numCont= cvFindContours( BprojectIpl, storage, &contours, sizeof(CvContour),
CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) );
cvSet(BprojectIpl, cvScalar(0,0,0));
for( ; contours != 0; contours = contours->h_next )
{
if ( (cvContourArea(contours, CV_WHOLE_SEQ) > contAthresh) ){
cvDrawContours( BprojectIpl, contours, color, color, -1, CV_FILLED, 8 );
}
}
}