OpenCV 2.4.6 SIFT KeyPoints使用大量内存进行检测

时间:2013-09-12 13:16:28

标签: opencv sift keypoint

我们在openCV 2.4.3中使用SIFT,我们决定升级到openCV 2.4.6。 升级后,openCV 2.4.6中的内存使用率从大约(150MB)跃升至1.2GB。

有人知道这是一个错误还是我们现在需要配置的东西?

我们的图片有1.4MB。在iOS上观察到此行为。问题似乎也发生在Linux(CentOs)中。

韩国社交协会

2 个答案:

答案 0 :(得分:1)

我记得其中一个版本中存在关于关键点提取的错误。我用ORB看到了它,所以我不知道这里是否是同样的问题,但我告诉你,以防它可以提供任何帮助。

问题是关键点提取器在提取新关键点之前没有清除输出向量:

vector<cv::KeyPoint> keys;
cv::Mat descs;
cv::ORB orb;

for(...)
{
  orb(image, mask, keys, descs); // bug: keypoints were accumulated in "keys"
}

我必须像这样打补丁:

for(...)
{
  keys.clear();
  descs.release();
  orb(image, mask, keys, descs);
}

答案 1 :(得分:0)

我已提交bug report with OpenCV。现在等着看......