2013-04-18 9 views
0

У меня возникли проблемы с кодом, который я пишу, я пытаюсь сделать операцию bwlabel на C++. И у меня проблемы с освобождением памяти, я не знаю, почему, потому что я попытался выполнить документацию в the OpenCV tutorials. Кажется, проблема с переменной refcount собственной переменной Mat.IplImage to Mat refcount

Вот мой код:

void VideoSeg::bwlabel(IplImage *srce, IplImage *out) 
{ 

    namedWindow("wndNameOut", CV_GUI_NORMAL); 
    cvConvertScale(srce,srce,255.); 
    Ptr<IplImage> srcx = srce; 

    Mat src(srcx); 

    imshow("wndNameOut", src);   //The image is succesfully plotted 
    SimpleBlobDetector blobDetector(params); 
    blobDetector.create("SimpleBlob"); 

    blobDetector.detect(src, keyPoints); // The problem appears in this line 

    for(int i=0; i<keyPoints.size(); i++) 
    { 
     cv::floodFill(src,keyPoints[i].pt, Scalar::all((i+1)*255/(keyPoints.size()+1))); 
    } 

    IplImage outx = src; 
    //http://docs.opencv.org/doc/tutorials/core/interoperability_with_OpenCV_1/interoperability_with_OpenCV_1.html 
    (*out) = outx; 

    cout << "Keypoints " << keyPoints.size() << endl; 
} 

ответ

0

Во-первых, попробуйте только C++ или C стиле. Вы смешиваете оба, и это не очень хорошо.

cvConvertScale, Mat, IplImage и больше. Используйте только cv::Mat, если возможно, и cv:: функция только.

Какая у вас ошибка сообщения?

+0

Спасибо, ваш ответ @Alexandre Bizeau, я знаю, что я смешиваю функции разных версий opencv, но я не могу это изменить. Проблема, которую я получаю, - проблема памяти, когда код достигает той строки, которую я обозначил раньше. –

+0

Неудачное утверждение OpenCV? Нарушение памяти? Утечка памяти ? – Vuwox

+0

это ошибка, которую я получаю Необработанное исключение в 0x7543c41f в Online_video_segmenter.exe: исключение Microsoft C++: cv :: Исключение в ячейке памяти 0x0013da54 .. –