cvLoadImage 与 CvvImage.load
来源:互联网 发布:软件测试书籍推荐 编辑:程序博客网 时间:2024/06/04 00:23
我没有遇到过这个种情况 一般我使用cvLoadImage()和cvReleaseImage()只要成对 就没有什么毛病
下面文章以备不时之需。
在做项目的过程中,使用OpenCV经常会出现一些内存泄露问题,自己编写的程序出现问题还情有可原,但若是库函数调用和使用时出现,却很令我恼火。花了好长时间和实践的经验告诉我应该客服它。下面把一些检测出的问题进行化解。(可能是水平不够,这些函数使用不当,望高手指点)
cvLoadImage函数:
可能大家还觉察不出来,但我深有体会,在程序中这个函数使用一次两次感觉不来,但在处理序列图像循环调用这个函数时,内存泄露的可能让你目瞪口呆!即使你在最后使用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为图像宽和高。
- cvLoadImage 与 CvvImage.load
- cvLoadImage
- cvLoadImage
- cvLoadImage
- cvvimage
- 关于memcpy与cvsaveimage/cvloadimage
- Mat imread 与 IplImage cvLoadImage区别
- Mat imread 与 IplImage cvLoadImage区别
- Mat imread 与 IplImage cvLoadImage区别
- cvLoadImage function
- cvLoadImage()
- opencv----cvLoadImage
- cvLoadImage用法
- CvvImage源码
- CvvImage源代码
- CvvImage.cpp
- opencv CvvImage
- CvvImage类
- 数据结构
- ural 1010. Discrete Function
- CEDIT 背景色
- C语言注释
- csdn是个好平台
- cvLoadImage 与 CvvImage.load
- ural 1136. Parliament
- VC++ 读取音频文件的属性
- 不是我们做不好事情,而是我们没想把事情做好
- 通过api获取句柄控制其他窗体(转)
- android 命令行的一个bug 之:android Usage: java [-options] class [args...]
- Linux替代Windows系统软件比拼
- JAVA面试题解惑系列(七)——日期和时间的处理
- FLex 4 effect 效果介绍