以前在用opencv编程的时候,从来没有考虑问题可能出自于opencv的函数,但是这次我确实碰到了
在这次的编程过程中,需要导入图像序列,并不断的处理,结果在编译没有任何问题,运行结果也正确的情况下,程序的内存不断增加,速度还不慢,于是不断的查找内存泄露的原因,结果在循环体中没有任何内存分配操作,于是定位到该函数了,从网上找到了相应的结案! 以下方法经过验证,解决了cvLoadImage的泄露问题
具体解决方法为:
使用CvvImage类进行替换,首先定义一个 CvvImage cwimage变量,并通过cwimage.Load("文件所在路径")
同时,定义一个IplImage *pSrcImage指针,并通过pSrcImage = cwimage.GetImage()获得对应的图像。
注意,pSrcImage不需要使用cvCreateImage, 而且pSrcImage获得的是RGB三通道图像,因此,如果你期望使用灰度图像的话,需要进行转换!
对于序列图像的处理,为了节省运算,pSrcImage 图像不需要进行重复的释放,可以在循环体外部进行定义,最后进行一次释放就可以。而对应于cwimage,如何采用cwimage.Destroy()释放的话,反而会报错!