关于cvLoadImage 的泄露问题

来源:互联网 发布:淘宝达人怎么申请入驻 编辑:程序博客网 时间:2024/05/16 08:00

以前在用opencv编程的时候,从来没有考虑问题可能出自于opencv的函数,但是这次我确实碰到了

 

在这次的编程过程中,需要导入图像序列,并不断的处理,结果在编译没有任何问题,运行结果也正确的情况下,程序的内存不断增加,速度还不慢,于是不断的查找内存泄露的原因,结果在循环体中没有任何内存分配操作,于是定位到该函数了,从网上找到了相应的结案!  以下方法经过验证,解决了cvLoadImage的泄露问题

 

具体解决方法为:

 

使用CvvImage类进行替换,首先定义一个 CvvImage cwimage变量,并通过cwimage.Load("文件所在路径")

同时,定义一个IplImage *pSrcImage指针,并通过pSrcImage =cwimage.GetImage()获得对应的图像。

 

注意,pSrcImage不需要使用cvCreateImage, 而且pSrcImage获得的是RGB三通道图像,因此,如果你期望使用灰度图像的话,需要进行转换!

 

对于序列图像的处理,为了节省运算,pSrcImage 图像不需要进行重复的释放,可以在循环体外部进行定义,最后进行一次释放就可以。而对应于cwimage,如何采用cwimage.Destroy()释放的话,反而会报错!

原创粉丝点击