私は次のコードを使用しています:
#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 を使用しています。