我写了这个方法(它显示图像):
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() 就没有任何泄漏)。 有办法解决吗?
谢谢!
最佳答案
您的第一个问题是您以不同方式命名命名窗口:
"new_Window1"
不同于 "new_window1"
。其次,我告诉你我从来没有使用过namedWindow,你只需要使用imshow 在一个名为"new_window1"
的图像窗口中显示图像。
备注 1:您无需担心显式释放 m_image
,这正是 Mat 的初衷。
备注2: waitKey(0)
永远保持窗口。
我以前在这里看到过这个问题,所以我想你也可以在这里搜索答案。
关于c++ - opencv imshow 导致内存泄漏 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13667869/