我们在 openCV 2.4.3 中使用 SIFT,我们决定升级到 openCV 2.4.6。升级后,内存使用量在 openCV 2.4.6 中从大约 (150MB) 跃升至 1.2GB。
有人知道这是一个错误还是我们现在需要配置的东西?
我们的图像有 1.4MB。在 iOS 上观察到了这种行为。这个问题似乎也在 Linux (CentOs) 中发生。
Tks
我记得其中一个版本中有一个关于关键点提取的错误。我在 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);
}
我已经用 OpenCV 提交了一个错误报告。现在就等着看吧……