Python: wrap Algorithm::read and Algorithm::write
authorPavel Rojtberg <pavel.rojtberg@igd.fraunhofer.de>
Thu, 27 Jul 2017 12:34:32 +0000 (14:34 +0200)
committerPavel Rojtberg <pavel.rojtberg@igd.fraunhofer.de>
Mon, 27 Nov 2017 16:04:56 +0000 (17:04 +0100)
modules/core/include/opencv2/core.hpp
modules/core/src/algorithm.cpp
modules/features2d/include/opencv2/features2d.hpp

index 8054d31..a1d196d 100644 (file)
@@ -3093,13 +3093,18 @@ public:
     */
     virtual void write(FileStorage& fs) const { (void)fs; }
 
+    /** @brief simplified API for language bindings
+     * @overload
+     */
+    CV_WRAP void write(const Ptr<FileStorage>& fs, const String& name = String()) const;
+
     /** @brief Reads algorithm parameters from a file storage
     */
-    virtual void read(const FileNode& fn) { (void)fn; }
+    CV_WRAP virtual void read(const FileNode& fn) { (void)fn; }
 
     /** @brief Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read
      */
-    virtual bool empty() const { return false; }
+    CV_WRAP virtual bool empty() const { return false; }
 
     /** @brief Reads algorithm from the file node
 
index 24f4dfb..556f5a7 100644 (file)
@@ -55,6 +55,19 @@ Algorithm::~Algorithm()
     CV_TRACE_FUNCTION();
 }
 
+void Algorithm::write(const Ptr<FileStorage>& fs, const String& name) const
+{
+    CV_TRACE_FUNCTION();
+    if(name.empty())
+    {
+        write(*fs);
+        return;
+    }
+    *fs << name << "{";
+    write(*fs);
+    *fs << "}";
+}
+
 void Algorithm::save(const String& filename) const
 {
     CV_TRACE_FUNCTION();
index 0ab11b6..119782b 100644 (file)
@@ -210,11 +210,15 @@ public:
 
     virtual void write( FileStorage&) const;
 
-    virtual void read( const FileNode&);
+    // see corresponding cv::Algorithm method
+    CV_WRAP virtual void read( const FileNode&);
 
     //! Return true if detector object is empty
     CV_WRAP virtual bool empty() const;
     CV_WRAP virtual String getDefaultName() const;
+
+    // see corresponding cv::Algorithm method
+    CV_WRAP inline void write(const Ptr<FileStorage>& fs, const String& name = String()) const { Algorithm::write(fs, name); }
 };
 
 /** Feature detectors in OpenCV have wrappers with a common interface that enables you to easily switch
@@ -985,7 +989,8 @@ public:
         read(fs.root());
     }
     // Reads matcher object from a file node
-    virtual void read( const FileNode& );
+    // see corresponding cv::Algorithm method
+    CV_WRAP virtual void read( const FileNode& );
     // Writes matcher object to a file storage
     virtual void write( FileStorage& ) const;
 
@@ -1012,6 +1017,10 @@ public:
 
     CV_WRAP static Ptr<DescriptorMatcher> create( int matcherType );
 
+
+    // see corresponding cv::Algorithm method
+    CV_WRAP inline void write(const Ptr<FileStorage>& fs, const String& name = String()) const { Algorithm::write(fs, name); }
+
 protected:
     /**
      * Class to work with descriptors from several images as with one merged matrix.