首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

OPENCV cvStartFindContours,cvFindNextContour函数内存泄露,怎么解决

2013-07-08 
OPENCVcvStartFindContours,cvFindNextContour函数内存泄露,如何解决?CvSeq*contour NULLCvSeq * tmp

OPENCV cvStartFindContours,cvFindNextContour函数内存泄露,如何解决?

CvSeq*   contour = NULL;
CvSeq * tmp = NULL;
CvContourScanner scanner = NULL;  
scanner = cvStartFindContours(BWimage,m_storage,sizeof(CvContour),CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));  //初始化轮廓扫描器 

while (contour=cvFindNextContour(scanner))  //开始遍历轮廓树
{  
if (fabs(cvContourArea(contour)) >tmparea)  
{  
tmp = contour; 
tmparea =fabs(cvContourArea(contour)); 

if (m_bIsCaptureTempalte == TRUE)
{
               m_seqTemplate = contour;
   m_fTemplteTotal = tmparea;
}
else
{
m_seqReal = contour;
m_fTotal = tmparea;
}

else
{
cvSubstituteContour(scanner,NULL);//删除当前的轮廓 
}
}  

经检测,以上代码存在内存泄露,因为是反复调用这段代码的,所以会泄露很多内存。在网上搜了帖子,没有发现正确的解决办法,期待高手给出解决方案。谢谢
[解决办法]
cvStartFindContours,cvEndFindContours(&scanner);  配对使用

热点排行