【问题标题】:OpenCV Error: Insufficient memoryOpenCV 错误:内存不足
【发布时间】:2011-11-19 18:01:29
【问题描述】:

我正在开发一个 c++ 风格的 opencv 2.3 项目。

在应用程序中,我加载视频并处理每一帧,并对 Mat 对象做一些事情。一段时间后,我得到一个内存不足错误。

我像这样捕获帧:

FCapture >> FImage; 
FDetector->execute(FImage); 

在执行中,我复制图像并将其保存在 std::Vector 列表中。并检查图像块,如:

vector<vector<Point> > contours; 
findContours(FImage, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); 

我知道要回答问题可能出在哪里有点困难,但不可能在这里发布整个程序代码。也许有人可以告诉我在哪里复制 Mat 对象或其他可能是错误原因的 OpenCv 对象时必须小心。

【问题讨论】:

  • 听起来像是典型的内存泄漏。您是否在使用后释放分配的图像?
  • 在一个小的测试输入上使用valgrind,看看是否有任何明显的错误。

标签: c++ opencv


【解决方案1】:

有趣:

在执行中,我复制图像并将其保存在 std::Vector 列表中

还有这个声明:

一段时间后,我收到内存不足错误。

OpenCV 图像可能会很大,具体取决于它们的大小,根据你所说的,我认为 你的向量增长得更快,然后你可以从中删除数据,导致内存不足错误。

有道理吗?如果你不断向向量中添加数据,总有一天你会耗尽内存来存储新数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2016-06-16
    • 1970-01-01
    相关资源
    最近更新 更多