update
This commit is contained in:
85
.CondaPkg/env/Lib/site-packages/skimage/io/tests/test_imageio.py
vendored
Normal file
85
.CondaPkg/env/Lib/site-packages/skimage/io/tests/test_imageio.py
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
import numpy as np
|
||||
from skimage.io import imread, imsave, plugin_order
|
||||
|
||||
from skimage._shared import testing
|
||||
from skimage._shared.testing import fetch, assert_stacklevel
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
def test_prefered_plugin():
|
||||
# Don't call use_plugin("imageio") before, this way we test that imageio is used
|
||||
# by default
|
||||
order = plugin_order()
|
||||
assert order["imread"][0] == "imageio"
|
||||
assert order["imsave"][0] == "imageio"
|
||||
assert order["imread_collection"][0] == "imageio"
|
||||
|
||||
|
||||
def test_imageio_as_gray():
|
||||
img = imread(fetch('data/color.png'), as_gray=True)
|
||||
assert img.ndim == 2
|
||||
assert img.dtype == np.float64
|
||||
img = imread(fetch('data/camera.png'), as_gray=True)
|
||||
# check that conversion does not happen for a gray image
|
||||
assert np.dtype(img.dtype).char in np.typecodes['AllInteger']
|
||||
|
||||
|
||||
def test_imageio_palette():
|
||||
img = imread(fetch('data/palette_color.png'))
|
||||
assert img.ndim == 3
|
||||
|
||||
|
||||
def test_imageio_truncated_jpg():
|
||||
# imageio>2.0 uses Pillow / PIL to try and load the file.
|
||||
# Oddly, PIL explicitly raises a SyntaxError when the file read fails.
|
||||
# The exception type changed from SyntaxError to OSError in PIL 8.2.0, so
|
||||
# allow for either to be raised.
|
||||
with testing.raises((OSError, SyntaxError)):
|
||||
imread(fetch('data/truncated.jpg'))
|
||||
|
||||
|
||||
class TestSave:
|
||||
@pytest.mark.parametrize(
|
||||
"shape,dtype",
|
||||
[
|
||||
# float32, float64 can't be saved as PNG and raise
|
||||
# uint32 is not roundtripping properly
|
||||
((10, 10), np.uint8),
|
||||
((10, 10), np.uint16),
|
||||
((10, 10, 2), np.uint8),
|
||||
((10, 10, 3), np.uint8),
|
||||
((10, 10, 4), np.uint8),
|
||||
],
|
||||
)
|
||||
def test_imsave_roundtrip(self, shape, dtype, tmp_path):
|
||||
if np.issubdtype(dtype, np.floating):
|
||||
min_ = 0
|
||||
max_ = 1
|
||||
else:
|
||||
min_ = 0
|
||||
max_ = np.iinfo(dtype).max
|
||||
expected = np.linspace(
|
||||
min_, max_, endpoint=True, num=np.prod(shape), dtype=dtype
|
||||
)
|
||||
expected = expected.reshape(shape)
|
||||
file_path = tmp_path / "roundtrip.png"
|
||||
imsave(file_path, expected)
|
||||
actual = imread(file_path)
|
||||
np.testing.assert_array_almost_equal(actual, expected)
|
||||
|
||||
def test_bool_array_save(self):
|
||||
with NamedTemporaryFile(suffix='.png') as f:
|
||||
fname = f.name
|
||||
|
||||
with pytest.warns(UserWarning, match=r'.* is a boolean image') as record:
|
||||
a = np.zeros((5, 5), bool)
|
||||
a[2, 2] = True
|
||||
imsave(fname, a)
|
||||
assert_stacklevel(record)
|
||||
|
||||
|
||||
def test_return_class():
|
||||
testing.assert_equal(type(imread(fetch('data/color.png'))), np.ndarray)
|
||||
Reference in New Issue
Block a user