Voici mon code:OpenCV Erreur: Mémoire insuffisante (Failled à alloué) lorsque j'utilise l'EIPD()
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;
}
L'erreur de mémoire insuffisante est survenue lorsque le programme exécute cette ligne
(*s)(in,mask,key,*descriptors);
C'est le second sift :: operator(). Je pense que la mémoire peut fuir. Qui peut m'aider?
En fait, j'ai le même problème. L'avez-vous déjà résolu? – flexwang