C++ Opencv错误:使用sift()时内存不足(无法分配)

C++ Opencv错误:使用sift()时内存不足(无法分配),c++,visual-studio-2010,opencv,sift,C++,Visual Studio 2010,Opencv,Sift,这是我的密码: void Init() // For the first frame. { Mat in=cv::imread("img1.jpg"); SIFT* s=NULL; vector< cv::KeyPoint > key;key.clear(); Mat* descriptors=NULL; _CrtMemState Sh1,Sh2,Sh_Diff; _CrtMemCheckpoint(&Sh1); s

这是我的密码:

void Init()  // For the first frame.
{
    Mat in=cv::imread("img1.jpg");
    SIFT* s=NULL;
    vector< cv::KeyPoint > key;key.clear();
    Mat* descriptors=NULL;
    _CrtMemState Sh1,Sh2,Sh_Diff;
    _CrtMemCheckpoint(&Sh1);
    s = new SIFT();
    descriptors = new Mat();
    (*s)(in, Mat(), key, *descriptors);
    delete s;
    _CrtMemCheckpoint(&Sh2);
    _CrtMemDifference(&Sh_Diff, &Sh1, &Sh2); 
    _CrtMemDumpAllObjectsSince(&Sh_Diff);

    GetKCent(*descriptors);key.clear();
    mask=cv::Scalar(0);
    mask(selection)=cv::Scalar(255);
    Mat mask(in.rows,in.cols,CV_8U);
    s=new SIFT();
    if (descriptors!=NULL) delete descriptors;
    descriptors = new Mat();
    (*s)(in,mask,key,*descriptors);
    delete s;
}

这是第二个sift::operator()。我想内存可能会泄漏。谁能帮我?

我相信你的opencv版本是2.4.4或更高版本。我在使用opencv 2.4.7和2.4.8时遇到了同样的问题。然后我回到2.4.3,一切都很顺利。我相信这是最近opencv的一个bug。

实际上我也有同样的问题。你解决了吗?
(*s)(in,mask,key,*descriptors);