a6971c768d
To reduce complexity, and make it easier to add more images and tests, the images in the `test-data` repository should be merged with the main repository. Furthermore, we can remove a lot of the subprocess work in the image_testing.py file, as we no longer need to have it interact with git. The images are not the same. Images were regenerated with Qt6, and now have proper big and little endian handling thanks to @pijyoi Second commit is a slightly modified variant of 2e135ab282d6007b34a3854921be54d0e9efb241 authored by @pijyoi it is to convert qimages to RGBA8888 for testing. Image files were regenerated images for the big/little handling Fixed issue with bogus test from test_NonUniformImage and generated a new image
169 lines
7.7 KiB
Python
169 lines
7.7 KiB
Python
import numpy as np
|
|
import pyqtgraph as pg
|
|
from pyqtgraph.Qt import QtGui
|
|
|
|
|
|
def check_format(shape, dtype, levels, lut, expected_format):
|
|
data = np.zeros(shape, dtype=dtype)
|
|
item = pg.ImageItem(axisOrder='row-major')
|
|
item.setImage(data, autoLevels=False, lut=lut, levels=levels)
|
|
item.render()
|
|
assert item.qimage.format() == expected_format
|
|
|
|
|
|
def test_uint8():
|
|
Format = QtGui.QImage.Format
|
|
dtype = np.uint8
|
|
w, h = 192, 108
|
|
lo, hi = 50, 200
|
|
lut_none = None
|
|
lut_mono1 = np.random.randint(256, size=256, dtype=np.uint8)
|
|
lut_mono2 = np.random.randint(256, size=(256, 1), dtype=np.uint8)
|
|
lut_rgb = np.random.randint(256, size=(256, 3), dtype=np.uint8)
|
|
lut_rgba = np.random.randint(256, size=(256, 4), dtype=np.uint8)
|
|
|
|
# lut with less than 256 entries
|
|
lut_mono1_s = np.random.randint(256, size=255, dtype=np.uint8)
|
|
lut_mono2_s = np.random.randint(256, size=(255, 1), dtype=np.uint8)
|
|
lut_rgb_s = np.random.randint(256, size=(255, 3), dtype=np.uint8)
|
|
lut_rgba_s = np.random.randint(256, size=(255, 4), dtype=np.uint8)
|
|
|
|
# lut with more than 256 entries
|
|
lut_mono1_l = np.random.randint(256, size=257, dtype=np.uint8)
|
|
lut_mono2_l = np.random.randint(256, size=(257, 1), dtype=np.uint8)
|
|
lut_rgb_l = np.random.randint(256, size=(257, 3), dtype=np.uint8)
|
|
lut_rgba_l = np.random.randint(256, size=(257, 4), dtype=np.uint8)
|
|
|
|
levels = None
|
|
check_format((h, w), dtype, levels, lut_none, Format.Format_Grayscale8)
|
|
check_format((h, w, 3), dtype, levels, lut_none, Format.Format_RGB888)
|
|
check_format((h, w, 4), dtype, levels, lut_none, Format.Format_RGBA8888)
|
|
|
|
levels = [lo, hi]
|
|
check_format((h, w), dtype, levels, lut_none, Format.Format_Indexed8)
|
|
levels = None
|
|
check_format((h, w), dtype, levels, lut_mono1, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba, Format.Format_Indexed8)
|
|
levels = [lo, hi]
|
|
check_format((h, w), dtype, levels, lut_mono1, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba, Format.Format_Indexed8)
|
|
|
|
check_format((h, w), dtype, levels, lut_mono1_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba_s, Format.Format_Indexed8)
|
|
|
|
check_format((h, w), dtype, levels, lut_mono1_l, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2_l, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb_l, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba_l, Format.Format_Indexed8)
|
|
|
|
levels = [lo, hi]
|
|
check_format((h, w, 3), dtype, levels, lut_none, Format.Format_RGB888)
|
|
|
|
|
|
def test_uint16():
|
|
Format = QtGui.QImage.Format
|
|
dtype = np.uint16
|
|
w, h = 192, 108
|
|
lo, hi = 100, 10000
|
|
lut_none = None
|
|
|
|
lut_mono1 = np.random.randint(256, size=256, dtype=np.uint8)
|
|
lut_mono2 = np.random.randint(256, size=(256, 1), dtype=np.uint8)
|
|
lut_rgb = np.random.randint(256, size=(256, 3), dtype=np.uint8)
|
|
lut_rgba = np.random.randint(256, size=(256, 4), dtype=np.uint8)
|
|
|
|
# lut with less than 256 entries
|
|
lut_mono1_s = np.random.randint(256, size=255, dtype=np.uint8)
|
|
lut_mono2_s = np.random.randint(256, size=(255, 1), dtype=np.uint8)
|
|
lut_rgb_s = np.random.randint(256, size=(255, 3), dtype=np.uint8)
|
|
lut_rgba_s = np.random.randint(256, size=(255, 4), dtype=np.uint8)
|
|
|
|
# lut with more than 256 entries
|
|
lut_mono1_l = np.random.randint(256, size=257, dtype=np.uint8)
|
|
lut_mono2_l = np.random.randint(256, size=(257, 1), dtype=np.uint8)
|
|
lut_rgb_l = np.random.randint(256, size=(257, 3), dtype=np.uint8)
|
|
lut_rgba_l = np.random.randint(256, size=(257, 4), dtype=np.uint8)
|
|
|
|
levels = None
|
|
try:
|
|
fmt_gray16 = Format.Format_Grayscale16
|
|
except AttributeError:
|
|
fmt_gray16 = Format.Format_ARGB32
|
|
check_format((h, w), dtype, levels, lut_none, fmt_gray16)
|
|
check_format((h, w, 3), dtype, levels, lut_none, Format.Format_RGB888)
|
|
check_format((h, w, 4), dtype, levels, lut_none, Format.Format_RGBA64)
|
|
|
|
levels = [lo, hi]
|
|
check_format((h, w), dtype, levels, lut_none, Format.Format_Grayscale8)
|
|
levels = None
|
|
check_format((h, w), dtype, levels, lut_mono1, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba, Format.Format_Indexed8)
|
|
|
|
check_format((h, w), dtype, levels, lut_mono1_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba_s, Format.Format_Indexed8)
|
|
|
|
check_format((h, w), dtype, levels, lut_mono1_l, Format.Format_Grayscale8)
|
|
check_format((h, w), dtype, levels, lut_mono2_l, Format.Format_Grayscale8)
|
|
check_format((h, w), dtype, levels, lut_rgb_l, Format.Format_RGBX8888)
|
|
check_format((h, w), dtype, levels, lut_rgba_l, Format.Format_RGBA8888)
|
|
|
|
levels = [lo, hi]
|
|
check_format((h, w, 3), dtype, levels, lut_none, Format.Format_RGB888)
|
|
|
|
|
|
def test_float32():
|
|
Format = QtGui.QImage.Format
|
|
dtype = np.float32
|
|
w, h = 192, 108
|
|
lo, hi = -1, 1
|
|
lut_none = None
|
|
|
|
lut_mono1 = np.random.randint(256, size=256, dtype=np.uint8)
|
|
lut_mono2 = np.random.randint(256, size=(256, 1), dtype=np.uint8)
|
|
lut_rgb = np.random.randint(256, size=(256, 3), dtype=np.uint8)
|
|
lut_rgba = np.random.randint(256, size=(256, 4), dtype=np.uint8)
|
|
|
|
# lut with less than 256 entries
|
|
lut_mono1_s = np.random.randint(256, size=255, dtype=np.uint8)
|
|
lut_mono2_s = np.random.randint(256, size=(255, 1), dtype=np.uint8)
|
|
lut_rgb_s = np.random.randint(256, size=(255, 3), dtype=np.uint8)
|
|
lut_rgba_s = np.random.randint(256, size=(255, 4), dtype=np.uint8)
|
|
|
|
# lut with more than 256 entries
|
|
lut_mono1_l = np.random.randint(256, size=257, dtype=np.uint8)
|
|
lut_mono2_l = np.random.randint(256, size=(257, 1), dtype=np.uint8)
|
|
lut_rgb_l = np.random.randint(256, size=(257, 3), dtype=np.uint8)
|
|
lut_rgba_l = np.random.randint(256, size=(257, 4), dtype=np.uint8)
|
|
|
|
levels = [lo, hi]
|
|
|
|
check_format((h, w), dtype, levels, lut_none, Format.Format_Grayscale8)
|
|
check_format((h, w, 3), dtype, levels, lut_none, Format.Format_RGB888)
|
|
check_format((h, w, 4), dtype, levels, lut_none, Format.Format_RGBA8888)
|
|
|
|
check_format((h, w), dtype, levels, lut_mono1, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba, Format.Format_Indexed8)
|
|
|
|
check_format((h, w), dtype, levels, lut_mono1_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_mono2_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgb_s, Format.Format_Indexed8)
|
|
check_format((h, w), dtype, levels, lut_rgba_s, Format.Format_Indexed8)
|
|
|
|
check_format((h, w), dtype, levels, lut_mono1_l, Format.Format_Grayscale8)
|
|
check_format((h, w), dtype, levels, lut_mono2_l, Format.Format_Grayscale8)
|
|
check_format((h, w), dtype, levels, lut_rgb_l, Format.Format_RGBX8888)
|
|
check_format((h, w), dtype, levels, lut_rgba_l, Format.Format_RGBA8888)
|
|
|