0

私は次のコードを使用しています:

#include <iostream>

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

    int main(int argc, char* argv[])
    {
        const string ipImgName= argv[1];
        Mat ipImg;
        ipImg = imread( ipImgName, 1 );

        cv::Mat gcImg;
        cv::Mat bgdModel;
        cv::Mat fgdModel;
        cv::Rect rect(0, 0, ipImg.cols-1, ipImg.rows-1);
        cv::grabCut( ipImg, gcImg, rect, bgdModel, fgdModel, 1, cv::GC_INIT_WITH_RECT ); 


        return 0;
    }

しかし、メイン ループを終了するとき、デバッガーがデストラクタに入ると、gcImg、bgdModel、または fgdModel~Mat()のコードがクラッシュします(「これはヒープの破損が原因である可能性があります」と言っています)。release()

cv::Matただし、を使用してヒープに sを割り当て、newその後それらを削除しないと、コードは問題なく実行されます。OpenCV 2.3.1 で Visual Studio 2010 を使用しています。

4

1 に答える 1