From fc19e856a6f74775060f5af5eef6310d056c2b53 Mon Sep 17 00:00:00 2001 From: Vincent Rabaud Date: Wed, 1 Jun 2011 18:24:53 +0000 Subject: [PATCH] - fix a memory leak --- modules/features2d/include/opencv2/features2d/features2d.hpp | 3 +++ modules/features2d/src/orb.cpp | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/features2d/include/opencv2/features2d/features2d.hpp b/modules/features2d/include/opencv2/features2d/features2d.hpp index ced6a0f..38ee3cb 100644 --- a/modules/features2d/include/opencv2/features2d/features2d.hpp +++ b/modules/features2d/include/opencv2/features2d/features2d.hpp @@ -457,6 +457,9 @@ public: */ ORB(size_t n_features = 500, const CommonParams & detector_params = CommonParams()); + /** destructor to empty the patterns */ + ~ORB(); + /** returns the descriptor size in bytes */ int descriptorSize() const; diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index 132b6bd..aed20c6 100644 --- a/modules/features2d/src/orb.cpp +++ b/modules/features2d/src/orb.cpp @@ -470,7 +470,8 @@ ORB::ORB(size_t n_features, const CommonParams & detector_params) : { // fill the extractors and descriptors for the corresponding scales float factor = 1.0 / params_.scale_factor_ / params_.scale_factor_; - int n_desired_features_per_scale = cvRound(n_features / ((std::pow(factor, (int)params_.n_levels_) - 1) / (factor - 1))); + int n_desired_features_per_scale = cvRound(n_features / ((std::pow(factor, int(params_.n_levels_)) - 1) + / (factor - 1))); n_features_per_level_.resize(detector_params.n_levels_); for (unsigned int level = 0; level < detector_params.n_levels_; level++) { @@ -497,6 +498,15 @@ ORB::ORB(size_t n_features, const CommonParams & detector_params) : } } +/** destructor to empty the patterns */ +ORB::~ORB() +{ + for (std::vector::const_iterator pattern = patterns_.begin(), pattern_end = patterns_.end(); pattern + != pattern_end; ++pattern) + if (*pattern) + delete *pattern; +} + /** returns the descriptor size in bytes */ int ORB::descriptorSize() const { -- 2.7.4