2010-09-20 4 views
0

Je rencontre des problèmes avec la fonction cvPyrMeansShiftFiltering() dans OpenCV. Tout appel à celui-ci entraîne un message "Échec de l'assertion".Erreur OpenCV avec décalage moyen de la pyramide (cvPyrMeansShiftFiltering)

Le code suivant échoue sur la ligne qui appelle cvPryMeanShiftFiltering:

#include "cv.h" 
#include "highgui.h" 
#include "cxcore.h" 
#include <iostream> 
using namespace std; 

int main() 
{ 
    string imageFile = "..\\bear.jpg"; 
    IplImage* src = cvLoadImage(imageFile.c_str()); 
    int width = src->width; 
    int height = src->height; 
    IplImage* result = cvCreateImage(cvSize(width,height),8,3); 
    cvPyrMeanShiftFiltering(src,result,4.0,4.0,0); 

    cvReleaseImage(&src); 
    cvReleaseImage(&result); 
    return 0; 
} 

Le programme se déroule jusqu'à ce que le message d'erreur suivant est envoyé à la console:

OpenCV Error: Assertion failed (udata < (uchar*)ptr && ((uchar*)ptr - udata) <= (ptrdiff_t)(sizeof(void*)+16)) in unknown function, file ......\src\cxcore\cxalloc.cpp, line 76

L'affirmation qui n'est en cv :: fastFree() dans cxalloc.cpp. Le programme fonctionne sur Windows 7 (64bit), sur VS 2008. La version OpenCV est 2.0.

J'ajouterai que j'ai aussi essayé ceci avec OpenCV 2.1 sur VS2008 et VS2010. Donc doit être quelque chose que je fais, non? Pourquoi ai-je cette erreur?

Répondre

0

Essayez d'utiliser le dernier paramètre! = 0. Ce paramètre (max_level) décrit le nombre de niveaux de pyramide à grande échelle seront utilisés pour la segmentation et il ne fait pas de sens à 0.