0

我的系统编程课程有作业。一切都很好,没有任何内存泄漏,直到我使用 opencv(仍然是初学者)。

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

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

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

此图像处理程序类具有图像字段,即:

cv::Mat m_image;

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

我什至在 imagehandler 类中做了一个析构函数:

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

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

这是 valgrind 的日志文件(必须把它放在一个粘贴箱中,因为它太大而不能放在这里): valgrind.log

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

4

1 回答 1

0

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

于 2016-08-12T13:56:48.470 回答