mirror of
https://github.com/opencv/opencv.git
synced 2025-06-12 04:12:52 +08:00
Merge pull request #9247 from paroj:wrap_alog_rw
This commit is contained in:
commit
abad8977b6
@ -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
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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.
|
||||
|
23
modules/python/test/test_algorithm_rw.py
Normal file
23
modules/python/test/test_algorithm_rw.py
Normal file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
'''
|
||||
Algorithm serializaion test
|
||||
'''
|
||||
import cv2
|
||||
|
||||
from tests_common import NewOpenCVTests
|
||||
|
||||
class algorithm_rw_test(NewOpenCVTests):
|
||||
def test_algorithm_rw(self):
|
||||
# some arbitrary non-default parameters
|
||||
gold = cv2.AKAZE_create(descriptor_size=1, descriptor_channels=2, nOctaves=3, threshold=4.0)
|
||||
gold.write(cv2.FileStorage("params.yml", 1), "AKAZE")
|
||||
|
||||
fs = cv2.FileStorage("params.yml", 0)
|
||||
algorithm = cv2.AKAZE_create()
|
||||
algorithm.read(fs.getNode("AKAZE"))
|
||||
|
||||
self.assertEqual(algorithm.getDescriptorSize(), 1)
|
||||
self.assertEqual(algorithm.getDescriptorChannels(), 2)
|
||||
self.assertEqual(algorithm.getNOctaves(), 3)
|
||||
self.assertEqual(algorithm.getThreshold(), 4.0)
|
Loading…
Reference in New Issue
Block a user