Opencv中cvLoadImage内存泄露问题
2011-07-28 09:57
411 查看
cvLoadImage函数:
在程序中这个函数使用一次两次感觉不来,但在处理序列图像循环调用这个函数时,内存泄露的可能让你目瞪口呆!
最近,在一个2000张样张的数据集上进行批处理, 我观察任务管理器内存分配的情况,发现内存在不断的被消耗掉!
原因可能是,每次loadImage的时候,内存都会重新分配一块内存给它,而原来的只要没有人工释放,就会被保留。
因此,在本次循环结束时使用cvReleaseImage(&pImg);进行了释放,内存才不会被消耗干净。
在 网上还查到了另外的解决方法:
使用CvvImage类代替。并且使用CvvImage类的Load函数。
使用过程大概如下:
//变量定义:
CvvImage pSrcImg;
IplImag *pSrcImgCopy ; //使用IplImag变量做个拷贝。毕竟IplImag 类处理方便。
//获取图像:
pSrcImg.Load(str); //str为Cstring类型的图像文件名
pSrcImgCopy = pSrcImg.GetImage(); //拷贝出pSrcImg的图像数据。
//释放内存
pSrcImg变量不需要每次释放,因为每次Load时是覆盖以前的内存区域。pSrcImgCopy同样。
不过在程序结束时要释放,以免产生内存泄露或者别人以为你忘了。
cvReleaseImage(&pSrcImgCopy );
pSrcImg.Destroy();
不过要正确释放pSrcImgCopy时,声明时必须create下:
pSrcImgCopy =cvCreateImage(cvSize(IMGWIDHT,IMGHEIGHT),IPL_DEPTH_8U, 3);
//IMGWIDHT,IMGHEIGHT为图像宽和高。
在程序中这个函数使用一次两次感觉不来,但在处理序列图像循环调用这个函数时,内存泄露的可能让你目瞪口呆!
最近,在一个2000张样张的数据集上进行批处理, 我观察任务管理器内存分配的情况,发现内存在不断的被消耗掉!
原因可能是,每次loadImage的时候,内存都会重新分配一块内存给它,而原来的只要没有人工释放,就会被保留。
因此,在本次循环结束时使用cvReleaseImage(&pImg);进行了释放,内存才不会被消耗干净。
在 网上还查到了另外的解决方法:
使用CvvImage类代替。并且使用CvvImage类的Load函数。
使用过程大概如下:
//变量定义:
CvvImage pSrcImg;
IplImag *pSrcImgCopy ; //使用IplImag变量做个拷贝。毕竟IplImag 类处理方便。
//获取图像:
pSrcImg.Load(str); //str为Cstring类型的图像文件名
pSrcImgCopy = pSrcImg.GetImage(); //拷贝出pSrcImg的图像数据。
//释放内存
pSrcImg变量不需要每次释放,因为每次Load时是覆盖以前的内存区域。pSrcImgCopy同样。
不过在程序结束时要释放,以免产生内存泄露或者别人以为你忘了。
cvReleaseImage(&pSrcImgCopy );
pSrcImg.Destroy();
不过要正确释放pSrcImgCopy时,声明时必须create下:
pSrcImgCopy =cvCreateImage(cvSize(IMGWIDHT,IMGHEIGHT),IPL_DEPTH_8U, 3);
//IMGWIDHT,IMGHEIGHT为图像宽和高。
相关文章推荐
- opencv中cvLoadImage和cvCloneImage的内存泄露问题
- OpenCV中的内存泄露问题
- OpenCV经常会出现一些内存泄露问题
- cvLoadImage,cvCloneImage的内存泄露问题
- OpenCV 的内存泄露问题(静态内存泄露)
- openCV人脸检测内存泄露问题
- cvLoadImage,cvCloneImage的内存泄露问题
- cvLoadImage,cvCloneImage的内存泄露问题
- MFC和opencv一起使用时会莫名奇妙出现内存泄露问题
- Opencv:IplImage*转Mat后的内存泄露问题
- opencv中图像连续显示的内存泄露问题的解决办法
- cvLoadImage,cvCloneImage的内存泄露问题
- java程序会发生内存泄露的问题吗
- OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)
- opencv2.4.8 vs2013内存越界问题
- JAVA垃圾回收机制与内存泄露问题
- JAVA垃圾回收机制与内存泄露问题
- SSH内存泄露及Spring Quartz问题
- C# Webbrowser使用加载页面多少了内存泄露问题解决方法汇总
- Raw 转 Dng内存泄露问题 dng_sdk