OpenCV IPLPImage未被回收

OpenCV IPLImage Not getting recycled

本文关键字:IPLPImage OpenCV      更新时间:2023-10-16

我试图使用cvBlob进行一些处理,但我注意到它使用了所有的RAM,我注意到这个

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);

在创建IPLPImages的最初两个调用中,它们泄漏了大约1mb的内存。每次迭代,我的exe使用的内存都会增加2mb。如果我把这些台词评论出来,它就会保持稳定。

tldr;如何回收IPLPImages

cvReleaseImage(&image2);
cvReleaseImage(&labelImg);
cvReleaseBlobs(blobs);