opencv中图像连续显示的内存泄露问题的解决办法
来源:互联网 发布:报警回执Ps软件 编辑:程序博客网 时间:2024/05/18 02:09
最近在利用opencv做一个视频检测模块,其中涉及到要把检测后的图像一帧帧的显示出来,形成视频流的感觉。
问题在于如果利用如下的代码进行连续的图像显示,内存泄露非常严重,不出几分钟,我的4G内存的本本就吃不消了。
原用于连续显示的代码:
int i = 0;
IplImage* img = 0;
char *image_name = "D:/project_java/VideoServer/img/1.jpg";
printf("------------- image to video ... ----------------\n");
int isColor = 1;
//创建窗口
cvNamedWindow( "Image", CV_WINDOW_AUTOSIZE );
while(1)
{
printf("%s%d%s", "image", ++i, ".jpg\n");
img = cvLoadImage(image_name);
if((img)
{
cvShowImage("Image", img.data);
char key = cvWaitKey(30);
}
else
{
printf("Could not load image file...\n");
cvWaitKey(30);
//exit(0);
}
}
cvDestroyWindow("Image");
上面代码的头文件是:
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h>
考虑到我用的是最新的opencv2.4.9,里面有新的图像读取和显示函数,于是我针对上述代码做了改动:
int i = 0;
//IplImage* img = 0;
Mat img;
char *image_name = "D:/project_java/VideoServer/img/1.jpg";
printf("------------- image to video ... ----------------\n");
//创建窗口
cvNamedWindow( "Image", CV_WINDOW_AUTOSIZE );
while(1)
{
printf("%s%d%s", "image", ++i, ".jpg\n");
//img = cvLoadImage(image_name);
img = imread(image_name);
//cvShowImage("Image", img.data);
if((img.data)
{
imshow("Image",img);
char key = cvWaitKey(30);
}
else
{
printf("Could not load image file...\n");
cvWaitKey(30);
//exit(0);
}
}
cvDestroyWindow("Image");
此时头文件为:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>
#include <stdlib.h>
using namespace cv;
现在发现内存泄露的问题迎刃而解了。看来学会使用最新的版本还是很重要的。
- opencv中图像连续显示的内存泄露问题的解决办法
- opencv中图像显示的问题
- opencv中cvLoadImage和cvCloneImage的内存泄露问题
- OpenCV 的内存泄露问题(静态内存泄露)
- OpenCV使用中“内存泄露”的探索
- opencv中如何利用mat来获取连续内存的图像区域,并改变形状
- MFC下使用opencv出现内存泄露的解决办法
- OpenCV内存泄露的检测
- 关于用opencv显示图像的问题
- Opencv中cvLoadImage内存泄露问题
- CString内存泄露的解决办法
- x264内存泄露的解决办法
- Handler内存泄露的解决办法
- OPENCV内存泄露问题
- OpenCV内存泄露问题
- Qt中显示opencv的图像
- OpenCV中图像的读取与显示
- OpenCV中图像的读取与显示
- 挚惶固杭安诒探迫才诱称捣诒且诼
- 华为上机练习题--求两个数组的总和
- 黑马程序员 Map集合
- 一个有意思的面试题
- xampp环境下drupal安装心得
- opencv中图像连续显示的内存泄露问题的解决办法
- 华为上机练习题--按照新规则排序
- POJ 4002 Alice's mooncake shop(DP,单调队列)
- hdu 4276 The Ghost Blows Light(树型DP)
- 内存分配器 (Memory Allocator)
- RR调度(Round-robin scheduling)简介
- 激活后台窗口
- LeetCode 42. Multiply Strings
- LeetCode 44. Permutations