mirror of
https://github.com/opencv/opencv.git
synced 2026-11-15 05:47:57 -06:00
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
import unittest
|
|
|
|
import cv2 as cv
|
|
import numpy as np
|
|
|
|
|
|
class NumpyByteOrderTest(unittest.TestCase):
|
|
|
|
def test_numpy_non_native_byte_order_input(self):
|
|
for dtype in (np.int16, np.uint16, np.int32, np.int64, np.float16, np.float32, np.float64):
|
|
for strided in (False, True):
|
|
native = np.arange(120, dtype=dtype).reshape(10, 12)
|
|
foreign = native.astype(native.dtype.newbyteorder('S'))
|
|
if strided:
|
|
native = native[:, ::2]
|
|
foreign = foreign[:, ::2]
|
|
foreign.setflags(write=False)
|
|
before = foreign.tobytes()
|
|
expected = cv.copyTo(native, None)
|
|
actual = cv.copyTo(foreign, None)
|
|
self.assertEqual(actual.dtype, expected.dtype)
|
|
np.testing.assert_array_equal(actual, expected)
|
|
self.assertEqual(foreign.tobytes(), before)
|
|
self.assertFalse(foreign.flags.writeable)
|
|
|
|
def test_numpy_non_native_byte_order_normalize(self):
|
|
for dtype in (np.float32, np.float64):
|
|
native = np.linspace(0, 1, 120, dtype=dtype).reshape(10, 12)
|
|
foreign = native.astype(native.dtype.newbyteorder('S'))
|
|
expected = cv.normalize(native, None, 0, 1, cv.NORM_MINMAX, dtype=cv.CV_32F)
|
|
actual = cv.normalize(foreign, None, 0, 1, cv.NORM_MINMAX, dtype=cv.CV_32F)
|
|
np.testing.assert_array_equal(actual, expected)
|
|
|
|
def test_numpy_non_native_byte_order_output_rejected(self):
|
|
for dtype in (np.int16, np.float16, np.float32, np.float64):
|
|
output = np.full((10, 12), 137, dtype=np.dtype(dtype).newbyteorder('S'))
|
|
before = output.tobytes()
|
|
with self.assertRaises(cv.error):
|
|
cv.utils.dumpInputOutputArray(output)
|
|
self.assertEqual(output.tobytes(), before)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|