From: marina.kolpakova Date: Wed, 9 Jan 2013 13:07:24 +0000 (+0400) Subject: replace Mats to Input/OutputArrays for Octave's public interface X-Git-Tag: submit/tizen_ivi/20141117.190038~2^2~1187^2~50 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e47f58f4cec1dc14da502f0256ea5898fbe7a8aa;p=profile%2Fivi%2Fopencv.git replace Mats to Input/OutputArrays for Octave's public interface --- diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index e3f3efe..5270d83 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2171,15 +2171,17 @@ public: }; 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; diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index fa34ad1..d9a2db3 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -167,7 +167,7 @@ bool cv::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, co update); } -void cv::Octave::setRejectThresholds(cv::Mat& thresholds) +void cv::Octave::setRejectThresholds(cv::OutputArray _thresholds) { dprintf("set thresholds according to DBP strategy\n"); @@ -190,7 +190,8 @@ void cv::Octave::setRejectThresholds(cv::Mat& thresholds) } 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(0); 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 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(0); int nfeatures = 0; + cv::Mat thresholds = _thresholds.getMat(); fso << "{" << "scale" << logScale << "weaks" << weak->total @@ -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; - 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