簡體   English   中英

Opencv錯誤:當我使用sift()時,內存不足(無法分配)

[英]Opencv Error: Insufficient memory(Failled to allocated) when I use the 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 = 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;
}

程序執行此行時發生內存不足錯誤

(*s)(in,mask,key,*descriptors);

這是第二個sift :: operator()。 我認為內存可能會泄漏。 誰能幫我?

我相信您的opencv版本是2.4.4或更高版本。 我在使用opencv 2.4.7和2.4.8時遇到相同的問題。 然后我回到2.4.3,一切順利。 我相信這是最近的opencv的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM