};
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 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 void setRejectThresholds(cv::Mat& thresholds);
- virtual void write( CvFileStorage* fs, string name) const;
+ virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const;
+
+
- virtual void write( cv::FileStorage &fs, const FeaturePool* pool, const Mat& thresholds) const;
int logScale;
update);
}
-void cv::Octave::setRejectThresholds(cv::Mat& thresholds)
+void cv::Octave::setRejectThresholds(cv::OutputArray _thresholds)
{
dprintf("set thresholds according to DBP strategy\n");
}
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);
cv::Mat traces(weaks, nsamples, CV_64FC1, cv::Scalar::all(FLT_MAX));
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);
int* usedPtr = used.ptr<int>(0);
int nfeatures = 0;
+ cv::Mat thresholds = _thresholds.getMat();
fso << "{"
<< "scale" << logScale
<< "weaks" << weak->total
}
-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;
- return CvBoost::predict(&sample, 0, (_votes.empty())? 0 : &votes, CV_WHOLE_SEQ, raw_mode, return_sum);
+ cv::Mat sample = _sample.getMat();
+ 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