replace Mats to Input/OutputArrays for Octave's public interface
authormarina.kolpakova <marina.kolpakova@itseez.com>
Wed, 9 Jan 2013 13:07:24 +0000 (17:07 +0400)
committermarina.kolpakova <marina.kolpakova@itseez.com>
Fri, 1 Feb 2013 10:34:40 +0000 (14:34 +0400)
modules/ml/include/opencv2/ml/ml.hpp
modules/ml/src/octave.cpp

index e3f3efe..5270d83 100644 (file)
@@ -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;
 
index fa34ad1..d9a2db3 100644 (file)
@@ -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<double>(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<int>(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