cvLoadImage内存泄露问题解决方法

Opencv中cvLoadImage内存泄露问题 cvLoadImage函数:在程序中这个函数使用一次两次感觉不来,但在处理序列图像循环调用这个函数时,内存泄露的可能让你目瞪口呆!最近,在一个2000张样张的数据集上进行批处理, 我观察任务管理器内存分配的情况,发现内存在不断的被消耗掉!原因可能是,每次loadImage的时候, 阅读详情

       在最近写的代码中,发现了opencv中cvLoadIamge的一个内存泄露问题。

       问题描述:我要在代码中循环地读取文件夹中的几千张图片,并通过cvShowImage显示出来,下面是代码。

   

 while(1 && !stopFlag)
	{
		char num[20];
		itoa(currentFramePos,num,10);
		CString img_name(num);
		img_name =inputImgPath+"\\"+ img_name+".png"; 
		//MessageBox(img_name);
		frame = cvLoadImage(img_name);
		if(!img) break;
		cvShowImage("Video",frame);
		UpdateData(FALSE);
		currentFramePos++;
		char c = cvWaitKey(10);
		if (c == 27 ) break;
	}

        该代码编译没问题是,但运行时发现读到六百多张图片的时候就内存出问题了,网上查了下是cvLoadImage函数不断赋值给frame的原因,应该算是opencv的一个bug。对于这一问题可以通过在while里面每显示完一个图片后就立即释放frame来解决,代码如下:

        

 while(1 && !stopFlag)
	{
		char num[20];
		itoa(currentFramePos,num,10);
		CString img_name(num);
		img_name =inputImgPath+"\\"+ img_name+".png"; 
		//MessageBox(img_name);
		frame = cvLoadImage(img_name);
		if(!img) break;
		cvShowImage("Video",frame);
                cvReleaseImage(frame);        //release memory of frame
		UpdateData(FALSE);
		currentFramePos++;
		char c = cvWaitKey(10);
		if (c == 27 ) break;
	}

        不过这个解决方案不能满足我的要求,因为我要对frame里的图片进行其他的处理,如果直接把它的内存释放掉,肯定就不能再对它操作了。

       最后,我通过一个中间变量IplImage* img成功地解决的这一内存问题。下面是代码,这样在显示图片时就不用释放frame了。

       

cvNamedWindow("Video",1);
har num[20];
IplImage* img;
	while(1 && !stopFlag)
	{
		//char num[20];
		itoa(currentFramePos,num,10);
		CString img_name(num);
		//strcpy_s(num, img_name);
		img_name =inputImgPath+"\\"+ img_name+".png"; 
		//MessageBox(img_name);
		img = cvLoadImage(img_name);
		if(!img) break;
		cvShowImage("Video",img);
		UpdateData(FALSE);
                cvCopy(img,frame);
		cvReleaseImage(&img);
		currentFramePos++;
		char c = cvWaitKey(10);
		if (c == 27 ) break;
	}


opencv中cvLoadImage和cvCloneImage的内存泄露问题 cvLoadImage函数: 可能大家还觉察不出来,但我深有体会,在程序中这个函数使用一次两次感觉不来,但在处理序列图像循环调用这个函数时,内存泄露的可能让你目瞪口呆!即使你在最后使用cvReleaseImage(&pImg);进行了释放,实验证明:视乎不能成功释放。 解决方法: 使用CvvImage类代替。并且使用CvvImage类的Load函数。 使用过程大概如下: 阅读详情

相关推荐

OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)【转】

OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage) 在利用opencv时,有时候即使你觉得释放了资源,依然会造成内存泄露,原因究竟何在,这里给你答案!

OpenCv函数cvCloneImage内存泄漏问题

声明:文章一转载自http://www.360doc.com/content/11/0621/16/6408986_128481830.shtml     文章二转载自http://hi.baidu.com/cateyefish/item/794ab51f2535a4737a5f2526      谢谢文章原作者的分享。 文章一: 1、imgcopy=cvCloneImage(im

嵌入式学习交流平台 3651

保姆级教程:用Docker Compose一键部署WVP-PRO+ZLM+录像服务(含Nginx反代)

本文提供了一套完整的容器化GB28181视频平台部署方案,通过Docker Compose实现WVP-PRO、ZLMediaKit(ZLM)和录像服务的一键式部署。详细介绍了环境准备、架构设计、容器化部署实战以及高级配置优化,帮助用户快速搭建高性能视频监控管理平台,适用于安防行业和物联网设备管理场景。

weixin_30415113的博客 861

cvLoadImage后释放内存

原文地址http://hi.baidu.com/cloverhouse/item/94e886a7816e2b268819d344   之前在写程序的时候,眼看着随着运行时间增加,内存耗用率,直线上升, 最终out of memory了,程序直接崩溃了 私心想着一定又是哪里没有释放空间了   一点一点查找   然后发现我忽略的很重要的一点  那就是  cvLoadImage函数 之前一

haah1221的专栏 3371

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 210

MobaXterm远程连接频繁掉线?3个SSH保活设置让你告别断连烦恼

本文针对MobaXterm远程连接频繁掉线问题,提供了3个SSH保活设置方案。从基础的SSH心跳机制到进阶的会话超时调整,再到TCP层保活与代理优化,全方位解决断连烦恼。特别适合需要稳定远程连接的开发者和运维人员,有效提升工作效率。

weixin_29250573的博客 486

图像处理和图像识别中常用的OpenCV函数

1.   cvLoadImage:将图像文件加载至内存; 2.   cvNamedWindow:在屏幕上创建一个窗口; 3.   cvDestroyWindow:销毁显示图像文件的窗口; 4.   cvDestroyAllWindows:销毁显示图像文件的所有窗口; 5.   cvShowImage:在一个已创建好的窗口中显示图像; 6.   cvWaitKey:使程序暂停,等待用户触发

网络资源是无限的 2万+

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4252

关于cvLoadImage 的泄露问题

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

gczg2012的专栏 606

Codesys电子凸轮Cam表实战:从可视化配置到程序化构建

本文详细介绍了Codesys电子凸轮Cam表的实战应用,从可视化配置到程序化构建的全过程。通过包装机和印刷机案例,解析Cam表的基础设置、调试技巧及动态构建方法,帮助工程师快速掌握电子凸轮技术,提升运动控制精度和效率。

weixin_29309785的博客 298

coze 怎么读取excel文件,使用循环,数据库完成LLM问答并存储

本文介绍了如何在Coze平台实现"Excel读取+循环处理+LLM问答+数据库存储"的工作流。主要分为三个步骤:1)使用代码节点解析Excel文件为问答对数组;2)通过循环节点遍历问答对,调用LLM节点生成回答;3)利用数据库节点将问答结果存储到Coze内置数据库中。文中提供了代码示例和节点配置说明,并强调了注意事项如Excel格式要求、LLM调用频率控制等。该工作流适用于批量构建知识库问答系统并持久化存储结果。

ZhangJiqun&191cm&85kg 1788

OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)

原文地址:http://blog.youkuaiyun.com/fengbingchun/article/details/6265287 在做项目的过程中,使用OpenCV经常会出现一些内存泄露问题,自己编写的程序出现问题还情有可原,但若是库函数调用和使用时出现,却很令我恼火。花了好长时间和实践的经验告诉我应该客服它。下面把一些检测出的问题进行化解。(可能是水平不够,这些函数使用不当,望高手

zr459927180的博客 531

Spring AI 实战:第五章、Spring AI本地模型部署之省钱小能手

白嫖的快乐你想象不到经过这番折腾,我们成功实现了零成本使用大模型完全本地运行保障隐私可视化访问Java生态无缝集成但可能有的小伙伴要吐槽,怎么换个底层模型这次就新建一个工程了呢?不能在以前的工程上开发吗?这样也太不优雅了吧~,我知道你很急,但先别急,等下一章节再来解决这个问题。为什么程序员特别喜欢Ollama?因为它就像一只温顺的羊驼——不花钱还能24小时产出代码!

liaokailin的专栏 922

OpenCV内存泄露小总结及相应处理方法

以下文章共总结出cvLoadImage cvCloneImage cvGetRow 三个函数容易由于使用不当而泄露内存,要注意! 首先,感谢网友:初心者的共享,正文如下: OpenCV中的内存泄露问题(cvLoadImage函数) 摘自:http://hi.baidu.com/srcer/blog/item/69890a447bc6c94f510ffe99.html/cmtid/e8aa

mysteryrat的专栏 2548

使用自制的NTC测量模块测试Plecs的热仿真效果

可以测试:您完全可以用这个模型来测试热仿真。NTC 模型是连接电气域和热域的关键桥梁。实现闭环:通过这种方式,您创建了一个高度真实的正反馈闭环系统:负载增加 -> 损耗增加 -> 温度升高 -> NTC 阻值变化 -> 控制电路可能因此调整(如降低频率或电流)-> 损耗变化 -> 温度变化。应用场景:这对于设计过温保护 (OTP) 电路风扇控制系统以及分析热失控条件非常有用。单位:确保热域中使用的单位( Kelvin 或 Celsius )与您的 C-Script 模型输入期望的单位一致。

311

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OpenCV中的内存泄露问题(cvLoadIm…

在做项目的过程中,使用OpenCV经常会出现一些内存泄露问题,自己编写的程序出现问题还情有可原,但若是库函数调用和使用时出现,却很令我恼火。花了好长时间和实践的经验告诉我应该客服它。下面把一些检测出的问题进行化解。(可能是水平不够,这些函数使用不当,望高手指点) cvLoadImage函数: 可能大家还觉察不出来,但我深有体会,在程序中这个函数使用一次两次感觉不来,但在处理序列图像循环调用这个

shangyaowei的专栏 1610

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

opencv各种内存泄露情况的大总结

以下文章共总结出cvLoadImage cvCloneImage cvGetRow 三个函数容易由于使用不当而泄露内存,要注意! OpenCV中的内存泄露问题(cvLoadImage函数) 摘自:http://hi.baidu.com/srcer/blog/item/69890a447bc6c94f510ffe99.html/cmtid/e8aa8ce9c2e3b833b90e2dce

BALANCE 1968

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

opencv 内存泄露

OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)转自:http://apps.hi.baidu.com/share/detail/30893646在做项目的过程中,使用OpenCV经常会出现一些内存泄露问题,自己编写的程序出现问题还情有可原,但若是库函数调用和使用时出现,却很令我恼火。花了好长时间和实践的经验告诉我应该客服它。下面把一些检测...

weixin_33943347的博客 130

opencv调试-内存泄露

opencv内存泄露接口小结

倔强不倒翁的博客 568

OpenCV中的内存泄露问题

FROM: http://hi.baidu.com/whu_hl/blog/item/ca7dd8d11745b623970a16bc.html 在做项目的过程中,使用OpenCV经常会出现一些内存泄露问题,自己编写的程序出现问题还情有可原,但若是库函数调用和使用时出现,却很令我恼火。花了好长时间和实践的经验告诉我应该客服它。下面把一些检测出的问题进行化解。(可能是水平不够,这些函数使用不当

星之河的专栏 3130

【OpenCV】有关内存释放的一些问题

转载请注明出处:http://blog.youkuaiyun.com/xiaowei_cqu/article/details/7586847 前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的问题。这里小小总结一下自己遇到的麻烦。 1、内存泄露 内存泄露是说没有释放已经不能使用的内存,这里一般指堆的内存才需要显示的释放。比如用malloc,calloc,real

引力空间 3173

第八篇:关于释放内存(原创+转载长贴)

使用iplimage类型的图像,进行视频处理,如果使用了cvCloneImage复制图片,就会遇到本片博客内的问题,编译没有问题,视频运行后,在任务管理器可看到内存刷刷的涨,知道把你的内存用完 最后运行界面出现如下情况,视频停止: 对应的报错如下: 出现以上的问题的原因及解决方法如下: 原帖转载请注明出处:http:/

liaojiacai的博客 1125

cvLoadImage,cvCloneImage的内存泄露问题

本文转自: http://hi.baidu.com/%C3%A8%D1%DB%D3%E3/blog/item/9d947e1b2b05555742a9adfd.html/cmtid/9872c2260129923cc9955905 针对openCV中,隐蔽的内存泄露,大家需要重视,拯救为数不多的内存,拯救应用程序的速度 在做项目的过程中,使用OpenCV...

134

[OpenCV]OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)【转】

OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)【转】 发布时间:2011-07-19 13:20:28 技术类别:软件开发         http://bbs.ednchina.com/BLOG_ARTICLE_2108648.HTM   再用cvCopy()之前,不仅需要分配内存,同时IplImage的ROI也要一起设置。   ...

534
上一篇: Luxand FaceSDK配置详解
下一篇: opencv中HSV通道处理小结
IT修道者
IT修道者 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄17年 326粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值