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

一文搞懂STM32定时器翻转模式(产生多路频率、占空比的PWM)

(产生多路频率、占空比的PWM)

weixin_56688599的博客 7935

cvLoadImage后释放内存

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

haah1221的专栏 3371

Applied Intelligence投稿经验分享(正在投稿中)

这几天在投稿Applied Intelligence这个期刊,过程很曲折,反反复复,因此写一篇经验分享,希望能记录一下自己的过程,也能给其他人一些帮助(可以在评论区讨论),提醒一下,一定要写一些声明,不会写、不知道写啥就看第四章的第二个问题。

weixin_55988068的博客 1万+

PINN内嵌物理知识神经网络入门及文献总结

内嵌物理知识深度学习方法(PINN)已经成功用于解决各类科学计算问题,其本质是将物理先验知识嵌入神经网络训练中,将一个求解PDE的问题转化为一个优化问题。这篇博客主要记录PINN相关论文

山里娃的博客 7万+

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

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

网络资源是无限的 2万+

别再只会regress了!用Stata的csdid命令搞定多期DID的完整实操指南

本文详细介绍了如何在Stata中使用csdid命令进行多期DID分析,解决传统DID方法在交错处理场景下的局限性。通过完整的实操指南,包括环境搭建、核心语法、结果解读和高阶应用,帮助研究者更准确地评估政策效果,适用于计量经济学和实证研究领域。

weixin_30236595的博客 582

关于cvLoadImage 的泄露问题

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

gczg2012的专栏 606

2026年5月典型AI应用落地

2026年5月AI应用全面进入商用化阶段,呈现三大特征:产业端深度渗透核心业务场景,如法律领域AI合同处理系统完成8500万元项目;消费端实现规模普及,京东618全场景AI化,智能家居产品涌现;基础设施层面运营商推出词元套餐降低使用门槛。政策法规与国际合作同步推进,日本通过首部AI专项法律,中国举办多场产业对接会。AI应用从技术验证转向实效产出,进入精算回报的成熟期。

AI_Encyc的博客 2630

毕设-MobileNetV4:给YOLOv8装上轻量化“引擎”——通用瓶颈与C2f融合的实战教程

本文介绍了一种将MobileNetV4与YOLOv8结合的目标检测模型轻量化方案。MobileNetV4通过通用瓶颈(UB)结构实现多任务适配,其核心改进包括动态卷积核、注意力机制和多路径特征聚合,显著提升特征提取能力。作者详细阐述了如何在YOLOv8框架中实现MobileNetV4的通用瓶颈模块,包括"膨胀-卷积-注意力-压缩"的流程设计,并构建完整的backbone网络。该方案通过融合MobileNetV4的轻量化优势与YOLOv8的高效检测架构,在移动设备上实现了精度与速度的良好平

FJN110的博客 505

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

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

zr459927180的博客 531

Python爬虫实战:社交媒体热点事件追踪与情感分析可视化

本文探讨了如何利用Python爬虫技术从微博和Twitter等社交媒体平台抓取数据,进行热点事件追踪和情感分析,并通过可视化方式展示舆论情感变化。文章详细介绍了最新的爬虫技术、数据处理方法和可视化实现,提供了完整的代码示例,帮助读者构建自己的社交媒体分析系统。关键词:Python爬虫、社交媒体分析、情感分析、数据可视化、热点追踪爬虫框架:Requests-HTML、aiohttp、Twint(Twitter专用)数据处理文本处理:Jieba(中文分词)、NLTK(英文处理)情感分析。

2201_76125261的博客 1105

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

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

mysteryrat的专栏 2548

YOLOv8训练流程-原理解析[目标检测理论篇]

本篇文章主要介绍了YOLOv8训练的流程,主要介绍了Task Aligned Assigner正负样本匹配策略以及YOLOv8的损失计算。

ice 4516

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

shangyaowei的专栏 1610

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

BALANCE 1968

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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、付费专栏及课程。

余额充值