Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/python/test/test_persistence.py
16337 views
1
#!/usr/bin/env python
2
""""Core serializaion tests."""
3
import tempfile
4
import os
5
import cv2 as cv
6
import numpy as np
7
from tests_common import NewOpenCVTests
8
9
10
class persistence_test(NewOpenCVTests):
11
def test_yml_rw(self):
12
fd, fname = tempfile.mkstemp(prefix="opencv_python_persistence_", suffix=".yml")
13
os.close(fd)
14
15
# Writing ...
16
expected = np.array([[[0, 1, 2, 3, 4]]])
17
expected_str = ("Hello", "World", "!")
18
fs = cv.FileStorage(fname, cv.FILE_STORAGE_WRITE)
19
fs.write("test", expected)
20
fs.write("strings", expected_str)
21
fs.release()
22
23
# Reading ...
24
fs = cv.FileStorage(fname, cv.FILE_STORAGE_READ)
25
root = fs.getFirstTopLevelNode()
26
self.assertEqual(root.name(), "test")
27
28
test = fs.getNode("test")
29
self.assertEqual(test.empty(), False)
30
self.assertEqual(test.name(), "test")
31
self.assertEqual(test.type(), cv.FILE_NODE_MAP)
32
self.assertEqual(test.isMap(), True)
33
actual = test.mat()
34
self.assertEqual(actual.shape, expected.shape)
35
self.assertEqual(np.array_equal(expected, actual), True)
36
37
strings = fs.getNode("strings")
38
self.assertEqual(strings.isSeq(), True)
39
self.assertEqual(strings.size(), len(expected_str))
40
self.assertEqual(all(strings.at(i).isString() for i in range(strings.size())), True)
41
self.assertSequenceEqual([strings.at(i).string() for i in range(strings.size())], expected_str)
42
fs.release()
43
44
os.remove(fname)
45
46