Fix missing format when writing Algorithm-based objects
authormvukad <mvukad@users.noreply.github.com>
Tue, 22 Mar 2016 22:19:42 +0000 (15:19 -0700)
committermvukad <mvukad@users.noreply.github.com>
Thu, 7 Apr 2016 20:49:42 +0000 (13:49 -0700)
Added a writeFormat() method to Algorithm which must be called by the
write() method of derived classes.

33 files changed:
modules/calib3d/src/stereobm.cpp
modules/calib3d/src/stereosgbm.cpp
modules/core/include/opencv2/core.hpp
modules/core/src/algorithm.cpp
modules/cudaimgproc/src/canny.cpp
modules/cudaimgproc/src/hough_circles.cpp
modules/cudaimgproc/src/hough_lines.cpp
modules/cudaimgproc/src/hough_segments.cpp
modules/features2d/src/akaze.cpp
modules/features2d/src/blobdetector.cpp
modules/features2d/src/kaze.cpp
modules/features2d/src/matchers.cpp
modules/ml/src/ann_mlp.cpp
modules/ml/src/boost.cpp
modules/ml/src/em.cpp
modules/ml/src/knearest.cpp
modules/ml/src/lr.cpp
modules/ml/src/nbayes.cpp
modules/ml/src/rtrees.cpp
modules/ml/src/svm.cpp
modules/ml/src/svmsgd.cpp
modules/ml/src/tree.cpp
modules/photo/src/align.cpp
modules/photo/src/calibrate.cpp
modules/photo/src/merge.cpp
modules/photo/src/tonemap.cpp
modules/shape/src/aff_trans.cpp
modules/shape/src/haus_dis.cpp
modules/shape/src/hist_cost.cpp
modules/shape/src/sc_dis.cpp
modules/shape/src/tps_trans.cpp
modules/video/src/bgfg_KNN.cpp
modules/video/src/bgfg_gaussmix2.cpp

index eb7daad..83ed9ae 100644 (file)
@@ -1225,6 +1225,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
         << "minDisparity" << params.minDisparity
         << "numDisparities" << params.numDisparities
index 1c085f9..67e150e 100644 (file)
@@ -1512,6 +1512,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
         << "minDisparity" << params.minDisparity
         << "numDisparities" << params.numDisparities
index 2e47658..4311b14 100644 (file)
@@ -3059,6 +3059,9 @@ public:
     /** Returns the algorithm string identifier.
      This string is used as top level xml/yml node tag when the object is saved to a file or string. */
     CV_WRAP virtual String getDefaultName() const;
+
+protected:
+    void writeFormat(FileStorage& fs) const;
 };
 
 struct Param {
index b930428..4e7701a 100644 (file)
@@ -57,7 +57,6 @@ void Algorithm::save(const String& filename) const
 {
     FileStorage fs(filename, FileStorage::WRITE);
     fs << getDefaultName() << "{";
-    fs << "format" << (int)3;
     write(fs);
     fs << "}";
 }
@@ -67,6 +66,11 @@ String Algorithm::getDefaultName() const
     return String("my_object");
 }
 
+void Algorithm::writeFormat(FileStorage& fs) const
+{
+    fs << "format" << (int)3;
+}
+
 }
 
 /* End of file. */
index 1e52bd2..75e53cf 100644 (file)
@@ -93,6 +93,7 @@ namespace
 
         void write(FileStorage& fs) const
         {
+            writeFormat(fs);
             fs << "name" << "Canny_CUDA"
             << "low_thresh" << low_thresh_
             << "high_thresh" << high_thresh_
index 6bdaf16..b706967 100644 (file)
@@ -99,6 +99,7 @@ namespace
 
         void write(FileStorage& fs) const
         {
+            writeFormat(fs);
             fs << "name" << "HoughCirclesDetector_CUDA"
             << "dp" << dp_
             << "minDist" << minDist_
index 7b9c082..db45fb6 100644 (file)
@@ -95,6 +95,7 @@ namespace
 
         void write(FileStorage& fs) const
         {
+            writeFormat(fs);
             fs << "name" << "HoughLinesDetector_CUDA"
             << "rho" << rho_
             << "theta" << theta_
index e3e34ec..edd3006 100644 (file)
@@ -98,6 +98,7 @@ namespace
 
         void write(FileStorage& fs) const
         {
+            writeFormat(fs);
             fs << "name" << "PHoughLinesDetector_CUDA"
             << "rho" << rho_
             << "theta" << theta_
index bfe91af..f4fe27c 100644 (file)
@@ -217,6 +217,7 @@ namespace cv
 
         void write(FileStorage& fs) const
         {
+            writeFormat(fs);
             fs << "descriptor" << descriptor;
             fs << "descriptor_channels" << descriptor_channels;
             fs << "descriptor_size" << descriptor_size;
index aa8593a..23b6f2b 100644 (file)
@@ -184,6 +184,7 @@ void SimpleBlobDetectorImpl::read( const cv::FileNode& fn )
 
 void SimpleBlobDetectorImpl::write( cv::FileStorage& fs ) const
 {
+    writeFormat(fs);
     params.write(fs);
 }
 
index 0174907..64778a0 100644 (file)
@@ -159,6 +159,7 @@ namespace cv
 
         void write(FileStorage& fs) const
         {
+            writeFormat(fs);
             fs << "extended" << (int)extended;
             fs << "upright" << (int)upright;
             fs << "threshold" << threshold;
index a1b557f..11dfa6d 100644 (file)
@@ -1179,6 +1179,7 @@ void FlannBasedMatcher::read( const FileNode& fn)
 
 void FlannBasedMatcher::write( FileStorage& fs) const
 {
+     writeFormat(fs);
      fs << "indexParams" << "[";
 
      if (indexParams)
index 19ee913..a772f31 100644 (file)
@@ -1151,6 +1151,7 @@ public:
             return;
         int i, l_count = layer_count();
 
+        writeFormat(fs);
         fs << "layer_sizes" << layer_sizes;
 
         write_params( fs );
index d7b6c61..3b6bd7a 100644 (file)
@@ -387,6 +387,7 @@ public:
         if( roots.empty() )
             CV_Error( CV_StsBadArg, "RTrees have not been trained" );
 
+        writeFormat(fs);
         writeParams(fs);
 
         int k, ntrees = (int)roots.size();
index 99b6866..5b833cd 100644 (file)
@@ -770,6 +770,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "training_params" << "{";
         write_params(fs);
         fs << "}";
index 99477cd..24c08da 100644 (file)
@@ -466,6 +466,7 @@ public:
 
     void write( FileStorage& fs ) const
     {
+        writeFormat(fs);
         impl->write(fs);
     }
 
index 585162c..a0917a5 100644 (file)
@@ -547,6 +547,7 @@ void LogisticRegressionImpl::write(FileStorage& fs) const
     {
         CV_Error(CV_StsBadArg,"file can't open. Check file path");
     }
+    writeFormat(fs);
     string desc = "Logisitic Regression Classifier";
     fs<<"classifier"<<desc.c_str();
     fs<<"alpha"<<this->params.alpha;
index 733dcf3..c46367c 100644 (file)
@@ -342,6 +342,7 @@ public:
     {
         int nclasses = (int)cls_labels.total(), i;
 
+        writeFormat(fs);
         fs << "var_count" << (var_idx.empty() ? nallvars : (int)var_idx.total());
         fs << "var_all" << nallvars;
 
index 1c9120a..0175944 100644 (file)
@@ -296,6 +296,7 @@ public:
         if( roots.empty() )
             CV_Error( CV_StsBadArg, "RTrees have not been trained" );
 
+        writeFormat(fs);
         writeParams(fs);
 
         fs << "oob_error" << oobError;
index 34acebb..3cef84f 100644 (file)
@@ -2037,6 +2037,7 @@ public:
         if( !isTrained() )
             CV_Error( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" );
 
+        writeFormat(fs);
         write_params( fs );
 
         fs << "var_count" << var_count;
index ef5da6f..0ef9175 100644 (file)
@@ -364,6 +364,7 @@ void SVMSGDImpl::write(FileStorage& fs) const
     if( !isTrained() )
         CV_Error( CV_StsParseError, "SVMSGD model data is invalid, it hasn't been trained" );
 
+    writeFormat(fs);
     writeParams( fs );
 
     fs << "weights" << weights_;
index 143e1fb..6c1dabc 100644 (file)
@@ -1681,6 +1681,7 @@ void DTreesImpl::writeTree( FileStorage& fs, int root ) const
 
 void DTreesImpl::write( FileStorage& fs ) const
 {
+    writeFormat(fs);
     writeParams(fs);
     writeTree(fs, roots[0]);
 }
index 94be92d..4fda881 100644 (file)
@@ -184,6 +184,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "max_bits" << max_bits
            << "exclude_range" << exclude_range
index 63f1818..f945ef1 100644 (file)
@@ -141,6 +141,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "samples" << samples
            << "lambda" << lambda
@@ -250,6 +251,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "max_iter" << max_iter
            << "threshold" << threshold;
index f051f55..4292f7c 100644 (file)
@@ -265,6 +265,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "contrast_weight" << wcon
            << "saturation_weight" << wsat
index 1ccc84e..a3a71fe 100644 (file)
@@ -83,6 +83,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "gamma" << gamma;
     }
@@ -161,6 +162,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "gamma" << gamma
            << "bias" << bias
@@ -242,6 +244,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "gamma" << gamma
            << "contrast" << contrast
@@ -339,6 +342,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "gamma" << gamma
            << "intensity" << intensity
@@ -446,6 +450,7 @@ public:
 
     void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name
            << "gamma" << gamma
            << "scale" << scale
index ec2342f..26644eb 100644 (file)
@@ -79,6 +79,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "affine_type" << int(fullAffine);
     }
index 6f2679f..dd67a29 100644 (file)
@@ -77,6 +77,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "distance" << distanceFlag
            << "rank" << rankProportion;
index 53c2c68..7df3c4e 100644 (file)
@@ -99,6 +99,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "flag" << flag
            << "dummies" << nDummies
@@ -224,6 +225,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "flag" << flag
            << "dummies" << nDummies
@@ -350,6 +352,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "dummies" << nDummies
            << "default" << defaultCost;
@@ -466,6 +469,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "dummies" << nDummies
            << "default" << defaultCost;
index 4d1de12..423ae8e 100644 (file)
@@ -137,6 +137,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "nRads" << nRadialBins
            << "nAngs" << nAngularBins
index 038fd2a..acff256 100644 (file)
@@ -81,6 +81,7 @@ public:
     //! write/read
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
            << "regularization" << regularizationParameter;
     }
index 334810b..a532204 100755 (executable)
@@ -183,6 +183,7 @@ public:
 
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
         << "history" << history
         << "nsamples" << nN
index 4b07811..2720e50 100644 (file)
@@ -286,6 +286,7 @@ public:
 
     virtual void write(FileStorage& fs) const
     {
+        writeFormat(fs);
         fs << "name" << name_
         << "history" << history
         << "nmixtures" << nmixtures