SiftDescriptorExtractor导致内存泄漏

时间:2011-08-02 16:04:33

标签: c memory-leaks opencv sift

我正在实现SIFT从图像中提取特征点,并注意到当我获得描述符时我有内存泄漏。无论如何我可以释放可能附在课堂上的记忆吗?

修改 向代码块添加了更多详细信息

cv::SiftFeatureDetector* features = new cv::SiftFeatureDetector();
cv::SiftDescriptorExtractor* extractor = new cv::SiftDescriptorExtractor();

std::vector<cv::KeyPoint> KeyPoints;
cv::Mat Descriptors;

// Turn the image into a Mat
cv::Mat mImage = cv::Mat(iplImage);

printf("Searching for keypoints in: %s.\n", szName.c_str());

// Detect keypoints
features->detect(mImage, KeyPoints);

printf("Found %d keypoints.\n", KeyPoints.size());

// Extract descriptors
extractor->compute(mImage, KeyPoints, Descriptors);

printf("Found %d descriptors.\n\n", Descriptors.rows);

// Let my memory go!
delete extractor;
delete features;

非常感谢任何建议。感谢。

2 个答案:

答案 0 :(得分:1)

你是对的。我刚刚在Linux上使用 OpenCV 2.3进行了测试,确实存在内存泄漏 compute()。这会影响 SiftDescriptorExtractor ,也可能影响其他类型,例如 SurfDescriptorExtractor OrbDescriptorExtractor BriefDescriptorExtractor

顺便说一下,请不要忘记在此代码末尾cvReleaseImage() iplImage调用的图像。{/ p>

答案 1 :(得分:0)

也使用2.3并且还使用SiftDescriptorExtractor遇到内存泄漏。 但是,其他描述符提取器没有此问题。 我建议在bugtracker中创建一个票据来通知开发人员。