Path: blob/master/modules/python/test/test_legacy.py
16337 views
#!/usr/bin/env python1from __future__ import print_function23import numpy as np4import cv2 as cv56from tests_common import NewOpenCVTests78class Hackathon244Tests(NewOpenCVTests):910def test_int_array(self):11a = np.array([-1, 2, -3, 4, -5])12absa0 = np.abs(a)13self.assertTrue(cv.norm(a, cv.NORM_L1) == 15)14absa1 = cv.absdiff(a, 0)15self.assertEqual(cv.norm(absa1, absa0, cv.NORM_INF), 0)1617def test_imencode(self):18a = np.zeros((480, 640), dtype=np.uint8)19flag, ajpg = cv.imencode("img_q90.jpg", a, [cv.IMWRITE_JPEG_QUALITY, 90])20self.assertEqual(flag, True)21self.assertEqual(ajpg.dtype, np.uint8)22self.assertGreater(ajpg.shape[0], 1)23self.assertEqual(ajpg.shape[1], 1)2425def test_projectPoints(self):26objpt = np.float64([[1,2,3]])27imgpt0, jac0 = cv.projectPoints(objpt, np.zeros(3), np.zeros(3), np.eye(3), np.float64([]))28imgpt1, jac1 = cv.projectPoints(objpt, np.zeros(3), np.zeros(3), np.eye(3), None)29self.assertEqual(imgpt0.shape, (objpt.shape[0], 1, 2))30self.assertEqual(imgpt1.shape, imgpt0.shape)31self.assertEqual(jac0.shape, jac1.shape)32self.assertEqual(jac0.shape[0], 2*objpt.shape[0])3334def test_estimateAffine3D(self):35pattern_size = (11, 8)36pattern_points = np.zeros((np.prod(pattern_size), 3), np.float32)37pattern_points[:,:2] = np.indices(pattern_size).T.reshape(-1, 2)38pattern_points *= 1039(retval, out, inliers) = cv.estimateAffine3D(pattern_points, pattern_points)40self.assertEqual(retval, 1)41if cv.norm(out[2,:]) < 1e-3:42out[2,2]=143self.assertLess(cv.norm(out, np.float64([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]])), 1e-3)44self.assertEqual(cv.countNonZero(inliers), pattern_size[0]*pattern_size[1])4546def test_fast(self):47fd = cv.FastFeatureDetector_create(30, True)48img = self.get_sample("samples/data/right02.jpg", 0)49img = cv.medianBlur(img, 3)50keypoints = fd.detect(img)51self.assertTrue(600 <= len(keypoints) <= 700)52for kpt in keypoints:53self.assertNotEqual(kpt.response, 0)5455def check_close_angles(self, a, b, angle_delta):56self.assertTrue(abs(a - b) <= angle_delta or57abs(360 - abs(a - b)) <= angle_delta)5859def check_close_pairs(self, a, b, delta):60self.assertLessEqual(abs(a[0] - b[0]), delta)61self.assertLessEqual(abs(a[1] - b[1]), delta)6263def check_close_boxes(self, a, b, delta, angle_delta):64self.check_close_pairs(a[0], b[0], delta)65self.check_close_pairs(a[1], b[1], delta)66self.check_close_angles(a[2], b[2], angle_delta)6768def test_geometry(self):69npt = 10070np.random.seed(244)71a = np.random.randn(npt,2).astype('float32')*50 + 1507273be = cv.fitEllipse(a)74br = cv.minAreaRect(a)75mc, mr = cv.minEnclosingCircle(a)7677be0 = ((150.2511749267578, 150.77322387695312), (158.024658203125, 197.57696533203125), 37.57804489135742)78br0 = ((161.2974090576172, 154.41793823242188), (199.2301483154297, 207.7177734375), -9.164555549621582)79mc0, mr0 = (160.41790771484375, 144.55152893066406), 136.7135009778081self.check_close_boxes(be, be0, 5, 15)82self.check_close_boxes(br, br0, 5, 15)83self.check_close_pairs(mc, mc0, 5)84self.assertLessEqual(abs(mr - mr0), 5)858687if __name__ == '__main__':88NewOpenCVTests.bootstrap()899091