- fix a memory leak

This commit is contained in:
Vincent Rabaud 2011-06-01 18:24:53 +00:00
parent 14f65f79f0
commit fc19e856a6
2 changed files with 14 additions and 1 deletions

View File

@ -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;

View File

@ -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<OrbPatterns*>::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
{