我正在用c ++风格的opencv 2.3开发一个项目。
在应用程序中,我加载视频并处理每一帧,并使用Mat对象执行一些操作。一段时间后,我得到一个内存不足错误。
我捕获框架如:
FCapture >> FImage;
FDetector->execute(FImage);
在执行中,我复制图像并将其保存在std :: Vector列表中。并检查imageblobs,如:
vector<vector<Point> > contours;
findContours(FImage, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
我知道在问题出现的地方有点难以回答,但是不可能在这里发布整个程序代码。也许有人可以告诉我在哪里必须小心复制Mat对象或其他可能是错误原因的OpenCv对象。
答案 0 :(得分:0)
有趣:
在执行中,我复制图像并将其保存在std :: Vector列表中
以及此声明:
一段时间后,我得到内存不足错误。
OpenCV图像可能会非常大,具体取决于它们的大小,根据您的说法,我认为您的矢量增长速度快于您可以从中删除数据,从而导致内存不足错误。
有道理吗?如果你不断向向量添加数据,有一天你将耗尽内存来存储新数据。