opencv imshow导致内存泄漏(c ++)

时间:2012-12-02 09:09:47

标签: c++ opencv memory-leaks

我写了这个方法(它显示了一个图像):

void ImageLoader::displayMyImage()
{
    namedWindow("new_Window1");
    imshow("new_window1", m_image);
    waitKey(2);
}

m_image是 Mat 类型。

我也使用这个析构函数:

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

但是,Valgrind发现了大量的内存泄漏。它是由这两个cv函数引起的: namedWindow imshow (因为没有调用displayMyImage(),没有任何泄漏)。 有办法解决吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您的第一个问题是您以不同方式命名命名窗口: "new_Window1""new_window1" 不同。其次,我告诉你我从未使用过namedWindow,你只需要使用imshow在名为"new_window1"的图像窗口中显示图像。

备注1:您无需担心明确释放m_image,这就是Mat首先要做的事情。

备注2: waitKey(0)永远保留窗口。

我之前在这里看过这个问题,所以我想你也可以在这里搜索答案。