forked from cvat-ai/cvat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_image.py
64 lines (49 loc) · 2.46 KB
/
test_image.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from itertools import product
import numpy as np
import os.path as osp
from unittest import TestCase
import datumaro.util.image as image_module
from datumaro.util.test_utils import TestDir
class ImageOperationsTest(TestCase):
def setUp(self):
self.default_backend = image_module._IMAGE_BACKEND
def tearDown(self):
image_module._IMAGE_BACKEND = self.default_backend
def test_save_and_load_backends(self):
backends = image_module._IMAGE_BACKENDS
for save_backend, load_backend, c in product(backends, backends, [1, 3]):
with TestDir() as test_dir:
if c == 1:
src_image = np.random.randint(0, 255 + 1, (2, 4))
else:
src_image = np.random.randint(0, 255 + 1, (2, 4, c))
path = osp.join(test_dir, 'img.png') # lossless
image_module._IMAGE_BACKEND = save_backend
image_module.save_image(path, src_image, jpeg_quality=100)
image_module._IMAGE_BACKEND = load_backend
dst_image = image_module.load_image(path)
self.assertTrue(np.array_equal(src_image, dst_image),
'save: %s, load: %s' % (save_backend, load_backend))
def test_encode_and_decode_backends(self):
backends = image_module._IMAGE_BACKENDS
for save_backend, load_backend, c in product(backends, backends, [1, 3]):
if c == 1:
src_image = np.random.randint(0, 255 + 1, (2, 4))
else:
src_image = np.random.randint(0, 255 + 1, (2, 4, c))
image_module._IMAGE_BACKEND = save_backend
buffer = image_module.encode_image(src_image, '.png',
jpeg_quality=100) # lossless
image_module._IMAGE_BACKEND = load_backend
dst_image = image_module.decode_image(buffer)
self.assertTrue(np.array_equal(src_image, dst_image),
'save: %s, load: %s' % (save_backend, load_backend))
def test_save_image_to_inexistent_dir_raises_error(self):
with self.assertRaises(FileNotFoundError):
image_module.save_image('some/path.jpg', np.ones((5, 4, 3)),
create_dir=False)
def test_save_image_can_create_dir(self):
with TestDir() as test_dir:
path = osp.join(test_dir, 'some', 'path.jpg')
image_module.save_image(path, np.ones((5, 4, 3)), create_dir=True)
self.assertTrue(osp.isfile(path))