Merge remote-tracking branch 'upstream/3.4' into merge-3.4
This commit is contained in:
@@ -20,8 +20,13 @@ class Hackathon244Tests(NewOpenCVTests):
|
||||
flag, ajpg = cv.imencode("img_q90.jpg", a, [cv.IMWRITE_JPEG_QUALITY, 90])
|
||||
self.assertEqual(flag, True)
|
||||
self.assertEqual(ajpg.dtype, np.uint8)
|
||||
self.assertGreater(ajpg.shape[0], 1)
|
||||
self.assertEqual(ajpg.shape[1], 1)
|
||||
self.assertTrue(isinstance(ajpg, np.ndarray), "imencode returned buffer of wrong type: {}".format(type(ajpg)))
|
||||
self.assertEqual(len(ajpg.shape), 1, "imencode returned buffer with wrong shape: {}".format(ajpg.shape))
|
||||
self.assertGreaterEqual(len(ajpg), 1, "imencode length of the returned buffer should be at least 1")
|
||||
self.assertLessEqual(
|
||||
len(ajpg), a.size,
|
||||
"imencode length of the returned buffer shouldn't exceed number of elements in original image"
|
||||
)
|
||||
|
||||
def test_projectPoints(self):
|
||||
objpt = np.float64([[1,2,3]])
|
||||
|
||||
@@ -481,6 +481,109 @@ class Arguments(NewOpenCVTests):
|
||||
cv.utils.testReservedKeywordConversion(20, lambda_=-4, from_=12), format_str.format(20, -4, 12)
|
||||
)
|
||||
|
||||
def test_parse_vector_int_convertible(self):
|
||||
np.random.seed(123098765)
|
||||
try_to_convert = partial(self._try_to_convert, cv.utils.dumpVectorOfInt)
|
||||
arr = np.random.randint(-20, 20, 40).astype(np.int32).reshape(10, 2, 2)
|
||||
int_min, int_max = get_limits(ctypes.c_int)
|
||||
for convertible in ((int_min, 1, 2, 3, int_max), [40, 50], tuple(),
|
||||
np.array([int_min, -10, 24, int_max], dtype=np.int32),
|
||||
np.array([10, 230, 12], dtype=np.uint8), arr[:, 0, 1],):
|
||||
expected = "[" + ", ".join(map(str, convertible)) + "]"
|
||||
actual = try_to_convert(convertible)
|
||||
self.assertEqual(expected, actual,
|
||||
msg=get_conversion_error_msg(convertible, expected, actual))
|
||||
|
||||
def test_parse_vector_int_not_convertible(self):
|
||||
np.random.seed(123098765)
|
||||
arr = np.random.randint(-20, 20, 40).astype(np.float).reshape(10, 2, 2)
|
||||
int_min, int_max = get_limits(ctypes.c_int)
|
||||
test_dict = {1: 2, 3: 10, 10: 20}
|
||||
for not_convertible in ((int_min, 1, 2.5, 3, int_max), [True, 50], 'test', test_dict,
|
||||
reversed([1, 2, 3]),
|
||||
np.array([int_min, -10, 24, [1, 2]], dtype=np.object),
|
||||
np.array([[1, 2], [3, 4]]), arr[:, 0, 1],):
|
||||
with self.assertRaises(TypeError, msg=get_no_exception_msg(not_convertible)):
|
||||
_ = cv.utils.dumpVectorOfInt(not_convertible)
|
||||
|
||||
def test_parse_vector_double_convertible(self):
|
||||
np.random.seed(1230965)
|
||||
try_to_convert = partial(self._try_to_convert, cv.utils.dumpVectorOfDouble)
|
||||
arr = np.random.randint(-20, 20, 40).astype(np.int32).reshape(10, 2, 2)
|
||||
for convertible in ((1, 2.12, 3.5), [40, 50], tuple(),
|
||||
np.array([-10, 24], dtype=np.int32),
|
||||
np.array([-12.5, 1.4], dtype=np.double),
|
||||
np.array([10, 230, 12], dtype=np.float), arr[:, 0, 1], ):
|
||||
expected = "[" + ", ".join(map(lambda v: "{:.2f}".format(v), convertible)) + "]"
|
||||
actual = try_to_convert(convertible)
|
||||
self.assertEqual(expected, actual,
|
||||
msg=get_conversion_error_msg(convertible, expected, actual))
|
||||
|
||||
def test_parse_vector_double_not_convertible(self):
|
||||
test_dict = {1: 2, 3: 10, 10: 20}
|
||||
for not_convertible in (('t', 'e', 's', 't'), [True, 50.55], 'test', test_dict,
|
||||
np.array([-10.1, 24.5, [1, 2]], dtype=np.object),
|
||||
np.array([[1, 2], [3, 4]]),):
|
||||
with self.assertRaises(TypeError, msg=get_no_exception_msg(not_convertible)):
|
||||
_ = cv.utils.dumpVectorOfDouble(not_convertible)
|
||||
|
||||
def test_parse_vector_rect_convertible(self):
|
||||
np.random.seed(1238765)
|
||||
try_to_convert = partial(self._try_to_convert, cv.utils.dumpVectorOfRect)
|
||||
arr_of_rect_int32 = np.random.randint(5, 20, 4 * 3).astype(np.int32).reshape(3, 4)
|
||||
arr_of_rect_cast = np.random.randint(10, 40, 4 * 5).astype(np.uint8).reshape(5, 4)
|
||||
for convertible in (((1, 2, 3, 4), (10, -20, 30, 10)), arr_of_rect_int32, arr_of_rect_cast,
|
||||
arr_of_rect_int32.astype(np.int8), [[5, 3, 1, 4]],
|
||||
((np.int8(4), np.uint8(10), np.int(32), np.int16(55)),)):
|
||||
expected = "[" + ", ".join(map(lambda v: "[x={}, y={}, w={}, h={}]".format(*v), convertible)) + "]"
|
||||
actual = try_to_convert(convertible)
|
||||
self.assertEqual(expected, actual,
|
||||
msg=get_conversion_error_msg(convertible, expected, actual))
|
||||
|
||||
def test_parse_vector_rect_not_convertible(self):
|
||||
np.random.seed(1238765)
|
||||
arr = np.random.randint(5, 20, 4 * 3).astype(np.float).reshape(3, 4)
|
||||
for not_convertible in (((1, 2, 3, 4), (10.5, -20, 30.1, 10)), arr,
|
||||
[[5, 3, 1, 4], []],
|
||||
((np.float(4), np.uint8(10), np.int(32), np.int16(55)),)):
|
||||
with self.assertRaises(TypeError, msg=get_no_exception_msg(not_convertible)):
|
||||
_ = cv.utils.dumpVectorOfRect(not_convertible)
|
||||
|
||||
def test_vector_general_return(self):
|
||||
expected_number_of_mats = 5
|
||||
expected_shape = (10, 10, 3)
|
||||
expected_type = np.uint8
|
||||
mats = cv.utils.generateVectorOfMat(5, 10, 10, cv.CV_8UC3)
|
||||
self.assertTrue(isinstance(mats, tuple),
|
||||
"Vector of Mats objects should be returned as tuple. Got: {}".format(type(mats)))
|
||||
self.assertEqual(len(mats), expected_number_of_mats, "Returned array has wrong length")
|
||||
for mat in mats:
|
||||
self.assertEqual(mat.shape, expected_shape, "Returned Mat has wrong shape")
|
||||
self.assertEqual(mat.dtype, expected_type, "Returned Mat has wrong elements type")
|
||||
empty_mats = cv.utils.generateVectorOfMat(0, 10, 10, cv.CV_32FC1)
|
||||
self.assertTrue(isinstance(empty_mats, tuple),
|
||||
"Empty vector should be returned as empty tuple. Got: {}".format(type(mats)))
|
||||
self.assertEqual(len(empty_mats), 0, "Vector of size 0 should be returned as tuple of length 0")
|
||||
|
||||
def test_vector_fast_return(self):
|
||||
expected_shape = (5, 4)
|
||||
rects = cv.utils.generateVectorOfRect(expected_shape[0])
|
||||
self.assertTrue(isinstance(rects, np.ndarray),
|
||||
"Vector of rectangles should be returned as numpy array. Got: {}".format(type(rects)))
|
||||
self.assertEqual(rects.dtype, np.int32, "Vector of rectangles has wrong elements type")
|
||||
self.assertEqual(rects.shape, expected_shape, "Vector of rectangles has wrong shape")
|
||||
empty_rects = cv.utils.generateVectorOfRect(0)
|
||||
self.assertTrue(isinstance(empty_rects, tuple),
|
||||
"Empty vector should be returned as empty tuple. Got: {}".format(type(empty_rects)))
|
||||
self.assertEqual(len(empty_rects), 0, "Vector of size 0 should be returned as tuple of length 0")
|
||||
|
||||
expected_shape = (10,)
|
||||
ints = cv.utils.generateVectorOfInt(expected_shape[0])
|
||||
self.assertTrue(isinstance(ints, np.ndarray),
|
||||
"Vector of integers should be returned as numpy array. Got: {}".format(type(ints)))
|
||||
self.assertEqual(ints.dtype, np.int32, "Vector of integers has wrong elements type")
|
||||
self.assertEqual(ints.shape, expected_shape, "Vector of integers has wrong shape.")
|
||||
|
||||
|
||||
class SamplesFindFile(NewOpenCVTests):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user