关于cvLoadImage 的泄露问题

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

 

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

 

具体解决方法为:

 

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

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

 

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

 

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值