mirror of
https://github.com/opencv/opencv.git
synced 2025-06-13 04:52:53 +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; }
|
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
|
/** @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
|
/** @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
|
/** @brief Reads algorithm from the file node
|
||||||
|
|
||||||
|
@ -55,6 +55,19 @@ Algorithm::~Algorithm()
|
|||||||
CV_TRACE_FUNCTION();
|
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
|
void Algorithm::save(const String& filename) const
|
||||||
{
|
{
|
||||||
CV_TRACE_FUNCTION();
|
CV_TRACE_FUNCTION();
|
||||||
|
@ -210,11 +210,15 @@ public:
|
|||||||
|
|
||||||
virtual void write( FileStorage&) const;
|
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
|
//! Return true if detector object is empty
|
||||||
CV_WRAP virtual bool empty() const;
|
CV_WRAP virtual bool empty() const;
|
||||||
CV_WRAP virtual String getDefaultName() 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
|
/** Feature detectors in OpenCV have wrappers with a common interface that enables you to easily switch
|
||||||
@ -985,7 +989,8 @@ public:
|
|||||||
read(fs.root());
|
read(fs.root());
|
||||||
}
|
}
|
||||||
// Reads matcher object from a file node
|
// 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
|
// Writes matcher object to a file storage
|
||||||
virtual void write( FileStorage& ) const;
|
virtual void write( FileStorage& ) const;
|
||||||
|
|
||||||
@ -1012,6 +1017,10 @@ public:
|
|||||||
|
|
||||||
CV_WRAP static Ptr<DescriptorMatcher> create( int matcherType );
|
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:
|
protected:
|
||||||
/**
|
/**
|
||||||
* Class to work with descriptors from several images as with one merged matrix.
|
* 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