0
我試着用cvBlob做一些處理,但我發現它使用所有的RAM和我noticd這OpenCV的IplImage結構沒有得到回收利用
IplImage* image2=cvCloneImage(&(IplImage)thresh);
IplImage *labelImg=cvCreateImage(cvGetSize(image2), IPL_DEPTH_LABEL, 1);
cvb::CvBlobs blobs;
unsigned int result=cvLabel(image2, labelImg, blobs);
cvb::cvRenderBlobs(labelImg, blobs, image2, image2);
for (cvb::CvBlobs::const_iterator it=blobs.begin(); it!=blobs.end(); ++it)
{
drawObject(it->second->centroid.x, it->second->centroid.y,camera);
drawLines(
it->second->minx,
it->second->maxx,
it->second->minx,
it->second->maxx,
it->second->miny,
it->second->miny,
it->second->maxy,
it->second->maxy,
camera);
}
thresh = Mat(image2);
創造IPLImages最初的兩個電話,他們泄露有關價值1mb的內存。每次迭代時,我的exe使用的內存增加2mb。如果我評論這些線,它會保持穩定。
tldr;我如何回收IPLImages
改爲使用cv :: Mat。 – William