使用opencv(opencv和c++)时会发生主要内存泄漏

Major memory leaks when using opencv ( opencv and c++ )

本文关键字:opencv 内存 泄漏 c++ 使用      更新时间:2023-10-16

我的系统编程课程有一个家庭作业。一切都很顺利,没有任何内存泄漏,直到我使用了opencv(还是个初学者)。

基本上,我有一个学生班和课程班,我必须将正确类型的学生(计算机科学学生、PG学生…)分配到正确的课程(选修课和PG/CS课程)。

我做了我必须做的所有事情,现在最后一步是显示谁以彩色毕业的图像和谁没有以灰度毕业的图像。都做到了。

我制作了一个图像处理程序类,用于处理打开图像、将图像保存到文件、初始化新图像以及所有函数,如转换为RGB和转换为GreyScale。。

这个图像处理程序类有一个图像字段,它是一个:

cv::Mat m_image;

现在,在学生课堂上,我让每个学生都有一个图像处理程序对象,我将他的图像存储到其中

我甚至在图像处理程序类中做了一个析构函数:

imagehandler::~imagehandler(){
m_image.release();
}

在我开始opencv步骤之前(甚至在我安装opencv并在代码中嵌入我需要做的事情之前),我根本没有内存泄漏。在我对opencv步骤进行编程(并全部工作)后,我出现了重大泄漏。

这是valgrind的日志文件(因为太大了,不能放在这里,所以不得不把它放在粘贴箱中):valgrind.log

错误主要是当我读取图像、保存图像、调整图像大小、转换为rgb或灰度时。。。所有与opencv相关的泄漏。

我以前遇到过这个问题,我通过更改OpenCV的版本来解决这个问题。我现在使用OpenCV-2.443,没有内存泄漏的问题。问题版本为opencv-3.0.00。