Commit e47f58f4 authored by marina.kolpakova's avatar marina.kolpakova

replace Mats to Input/OutputArrays for Octave's public interface

parent e7bab669
...@@ -2171,15 +2171,17 @@ public: ...@@ -2171,15 +2171,17 @@ public:
}; };
Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage);
virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth);
virtual void setRejectThresholds(OutputArray thresholds);
virtual void write( CvFileStorage* fs, string name) const;
virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const;
virtual ~Octave(); virtual ~Octave();
virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth);
virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const;
virtual void setRejectThresholds(cv::Mat& thresholds);
virtual void write( CvFileStorage* fs, string name) const;
virtual void write( cv::FileStorage &fs, const FeaturePool* pool, const Mat& thresholds) const;
int logScale; int logScale;
......
...@@ -167,7 +167,7 @@ bool cv::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, co ...@@ -167,7 +167,7 @@ bool cv::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, co
update); update);
} }
void cv::Octave::setRejectThresholds(cv::Mat& thresholds) void cv::Octave::setRejectThresholds(cv::OutputArray _thresholds)
{ {
dprintf("set thresholds according to DBP strategy\n"); dprintf("set thresholds according to DBP strategy\n");
...@@ -190,7 +190,8 @@ void cv::Octave::setRejectThresholds(cv::Mat& thresholds) ...@@ -190,7 +190,8 @@ void cv::Octave::setRejectThresholds(cv::Mat& thresholds)
} }
int weaks = weak->total; int weaks = weak->total;
thresholds.create(1, weaks, CV_64FC1); _thresholds.create(1, weaks, CV_64FC1);
cv::Mat& thresholds = _thresholds.getMatRef();
double* thptr = thresholds.ptr<double>(0); double* thptr = thresholds.ptr<double>(0);
cv::Mat traces(weaks, nsamples, CV_64FC1, cv::Scalar::all(FLT_MAX)); cv::Mat traces(weaks, nsamples, CV_64FC1, cv::Scalar::all(FLT_MAX));
...@@ -346,12 +347,13 @@ void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfe ...@@ -346,12 +347,13 @@ void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfe
fs << "}"; fs << "}";
} }
void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, const Mat& thresholds) const void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const
{ {
CV_Assert(!thresholds.empty()); CV_Assert(!_thresholds.empty());
cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1);
int* usedPtr = used.ptr<int>(0); int* usedPtr = used.ptr<int>(0);
int nfeatures = 0; int nfeatures = 0;
cv::Mat thresholds = _thresholds.getMat();
fso << "{" fso << "{"
<< "scale" << logScale << "scale" << logScale
<< "weaks" << weak->total << "weaks" << weak->total
...@@ -438,10 +440,18 @@ bool cv::Octave::train(const Dataset* dataset, const FeaturePool* pool, int weak ...@@ -438,10 +440,18 @@ bool cv::Octave::train(const Dataset* dataset, const FeaturePool* pool, int weak
} }
float cv::Octave::predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const float cv::Octave::predict( cv::InputArray _sample, cv::InputArray _votes, bool raw_mode, bool return_sum ) const
{ {
CvMat sample = _sample, votes = _votes; cv::Mat sample = _sample.getMat();
return CvBoost::predict(&sample, 0, (_votes.empty())? 0 : &votes, CV_WHOLE_SEQ, raw_mode, return_sum); CvMat csample = sample;
if (_votes.empty())
return CvBoost::predict(&csample, 0, 0, CV_WHOLE_SEQ, raw_mode, return_sum);
else
{
cv::Mat votes = _votes.getMat();
CvMat cvotes = votes;
return CvBoost::predict(&csample, 0, &cvotes, CV_WHOLE_SEQ, raw_mode, return_sum);
}
} }
float cv::Octave::predict( const Mat& _sample, const cv::Range range) const float cv::Octave::predict( const Mat& _sample, const cv::Range range) const
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment