corrected xml parameters file management in the retina interface
authorAlexandre Benoit <no@email>
Fri, 21 Oct 2011 10:02:09 +0000 (10:02 +0000)
committerAlexandre Benoit <no@email>
Fri, 21 Oct 2011 10:02:09 +0000 (10:02 +0000)
modules/contrib/include/opencv2/contrib/retina.hpp
modules/contrib/src/retina.cpp

index b7f3fe1..6d626c5 100644 (file)
@@ -116,22 +116,22 @@ public:
 
        /**
         * Main constructor with most commun use setup : create an instance of color ready retina model
-        * @param parametersSaveFile : the filename of the xml file that records the used retina parametes setup
         * @param inputSize : the input frame size
+        * @param parametersSaveFile : the filename of the xml file that records the default retina parameters setup, if empty, then, no default parameter file will be written
         */
-       Retina(const std::string parametersSaveFile, Size inputSize);
+       Retina(Size inputSize, const std::string parametersSaveFile="");
 
        /**
         * Complete Retina filter constructor which allows all basic structural parameters definition
-        * @param parametersSaveFile : the filename of the xml file that records the used retina parametes setup
          * @param inputSize : the input frame size
+        * @param parametersSaveFile : the filename of the xml file that records the default retina parameters setup, if empty, then, no default parameter file will be written
         * @param colorMode : the chosen processing mode : with or without color processing
         * @param colorSamplingMethod: specifies which kind of color sampling will be used
         * @param useRetinaLogSampling: activate retina log sampling, if true, the 2 following parameters can be used
         * @param reductionFactor: only usefull if param useRetinaLogSampling=true, specifies the reduction factor of the output frame (as the center (fovea) is high resolution and corners can be underscaled, then a reduction of the output is allowed without precision leak
         * @param samplingStrenght: only usefull if param useRetinaLogSampling=true, specifies the strenght of the log scale that is applied
         */
-       Retina(const std::string parametersSaveFile, Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod=RETINA_COLOR_BAYER, const bool useRetinaLogSampling=false, const double reductionFactor=1.0, const double samplingStrenght=10.0);
+       Retina(Size inputSize, const std::string parametersSaveFile, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod=RETINA_COLOR_BAYER, const bool useRetinaLogSampling=false, const double reductionFactor=1.0, const double samplingStrenght=10.0);
 
        virtual ~Retina();
 
@@ -266,7 +266,7 @@ protected:
        const bool _convertCvMat2ValarrayBuffer(const cv::Mat inputMatToConvert, std::valarray<float> &outputValarrayMatrix);
 
        //! private method called by constructors, gathers their parameters and use them in a unified way
-       void _init(const std::string parametersSaveFile, Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod=RETINA_COLOR_BAYER, const bool useRetinaLogSampling=false, const double reductionFactor=1.0, const double samplingStrenght=10.0);
+       void _init(const std::string parametersSaveFileName, Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod=RETINA_COLOR_BAYER, const bool useRetinaLogSampling=false, const double reductionFactor=1.0, const double samplingStrenght=10.0);
 
 
 };
index 5840c28..458a50a 100644 (file)
 namespace cv
 {
     
-Retina::Retina(const std::string parametersSaveFile, const cv::Size inputSize)
+Retina::Retina(const cv::Size inputSize, const std::string parametersSaveFile)
 {
     _retinaFilter = 0;
     _init(parametersSaveFile, inputSize, true, RETINA_COLOR_BAYER, false);
 }
 
-Retina::Retina(const std::string parametersSaveFile, const cv::Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod, const bool useRetinaLogSampling, const double reductionFactor, const double samplingStrenght)
+Retina::Retina(const cv::Size inputSize, const std::string parametersSaveFile, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod, const bool useRetinaLogSampling, const double reductionFactor, const double samplingStrenght)
 {
     _retinaFilter = 0;
     _init(parametersSaveFile, inputSize, colorMode, colorSamplingMethod, useRetinaLogSampling, reductionFactor, samplingStrenght);
@@ -303,9 +303,9 @@ void Retina::getMagno(std::valarray<float> &){_retinaFilter->getMovingContours()
 void Retina::getParvo(std::valarray<float> &){_retinaFilter->getContours();}
 
 // private method called by constructirs
-void Retina::_init(const std::string parametersSaveFile, const cv::Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod, const bool useRetinaLogSampling, const double reductionFactor, const double samplingStrenght)
+void Retina::_init(const std::string parametersSaveFileName, const cv::Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod, const bool useRetinaLogSampling, const double reductionFactor, const double samplingStrenght)
 {
-       _parametersSaveFileName = parametersSaveFile;
+       _parametersSaveFileName = parametersSaveFileName;
 
        // basic error check
        if (inputSize.height*inputSize.width <= 0)
@@ -320,22 +320,24 @@ void Retina::_init(const std::string parametersSaveFile, const cv::Size inputSiz
            delete _retinaFilter;
        _retinaFilter = new RetinaFilter(inputSize.height, inputSize.width, colorMode, colorSamplingMethod, useRetinaLogSampling, reductionFactor, samplingStrenght);
 
-       // prepare the parameter XML tree
-       _parametersSaveFile.open(parametersSaveFile, cv::FileStorage::WRITE );
-
-       _parametersSaveFile<<"InputSize"<<"{";
-       _parametersSaveFile<<"height"<<inputSize.height;
-       _parametersSaveFile<<"width"<<inputSize.width;
-       _parametersSaveFile<<"}";
+       // prepare the default parameter XML file with default setup
+       if (_parametersSaveFileName.size()>0)
+       {
+               _parametersSaveFile.open(parametersSaveFileName, cv::FileStorage::WRITE );
 
-       // clear all retina buffers
-       // apply default setup
-       setupOPLandIPLParvoChannel();
-       setupIPLMagnoChannel();
+               _parametersSaveFile<<"InputSize"<<"{";
+               _parametersSaveFile<<"height"<<inputSize.height;
+               _parametersSaveFile<<"width"<<inputSize.width;
+               _parametersSaveFile<<"}";
 
-       // write current parameters to params file
-       _parametersSaveFile.release();
+               // clear all retina buffers
+               // apply default setup
+               setupOPLandIPLParvoChannel();
+               setupIPLMagnoChannel();
 
+               // write current parameters to params file
+               _parametersSaveFile.release();
+       }
        // init retina
        _retinaFilter->clearAllBuffers();