mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 09:25:45 +08:00
core: FileStorage - add support for writing vector<String> with bindings (#11883)
* core: FileStorage - add support for writing vector<String> with bindings * python: extend persistence test for string sequences
This commit is contained in:
parent
5e31c82b5b
commit
3f65924c45
@ -444,7 +444,9 @@ public:
|
||||
/// @overload
|
||||
CV_WRAP void write(const String& name, const String& val);
|
||||
/// @overload
|
||||
CV_WRAP void write(const String& name, InputArray val);
|
||||
CV_WRAP void write(const String& name, const Mat& val);
|
||||
/// @overload
|
||||
CV_WRAP void write(const String& name, const std::vector<String>& val);
|
||||
|
||||
/** @brief Writes a comment.
|
||||
|
||||
|
@ -194,9 +194,14 @@ void FileStorage::write( const String& name, const String& val )
|
||||
*this << name << val;
|
||||
}
|
||||
|
||||
void FileStorage::write( const String& name, InputArray val )
|
||||
void FileStorage::write( const String& name, const Mat& val )
|
||||
{
|
||||
*this << name << val.getMat();
|
||||
*this << name << val;
|
||||
}
|
||||
|
||||
void FileStorage::write( const String& name, const std::vector<String>& val )
|
||||
{
|
||||
*this << name << val;
|
||||
}
|
||||
|
||||
void FileStorage::writeComment( const String& comment, bool append )
|
||||
|
@ -14,14 +14,17 @@ class persistence_test(NewOpenCVTests):
|
||||
|
||||
# Writing ...
|
||||
expected = np.array([[[0, 1, 2, 3, 4]]])
|
||||
expected_str = ("Hello", "World", "!")
|
||||
fs = cv.FileStorage(fname, cv.FILE_STORAGE_WRITE)
|
||||
fs.write("test", expected)
|
||||
fs.write("strings", expected_str)
|
||||
fs.release()
|
||||
|
||||
# Reading ...
|
||||
fs = cv.FileStorage(fname, cv.FILE_STORAGE_READ)
|
||||
root = fs.getFirstTopLevelNode()
|
||||
self.assertEqual(root.name(), "test")
|
||||
|
||||
test = fs.getNode("test")
|
||||
self.assertEqual(test.empty(), False)
|
||||
self.assertEqual(test.name(), "test")
|
||||
@ -30,6 +33,12 @@ class persistence_test(NewOpenCVTests):
|
||||
actual = test.mat()
|
||||
self.assertEqual(actual.shape, expected.shape)
|
||||
self.assertEqual(np.array_equal(expected, actual), True)
|
||||
|
||||
strings = fs.getNode("strings")
|
||||
self.assertEqual(strings.isSeq(), True)
|
||||
self.assertEqual(strings.size(), len(expected_str))
|
||||
self.assertEqual(all(strings.at(i).isString() for i in range(strings.size())), True)
|
||||
self.assertSequenceEqual([strings.at(i).string() for i in range(strings.size())], expected_str)
|
||||
fs.release()
|
||||
|
||||
os.remove(fname)
|
||||
|
Loading…
Reference in New Issue
Block a user