Improves a UMat unit test
authorHamdi Sahloul <hamdisahloul@hotmail.com>
Sat, 1 Sep 2018 14:56:40 +0000 (23:56 +0900)
committerHamdi Sahloul <hamdisahloul@hotmail.com>
Sat, 1 Sep 2018 15:34:35 +0000 (00:34 +0900)
modules/python/test/test_umat.py

index 004d701..102bb12 100644 (file)
@@ -73,14 +73,17 @@ class UMat(NewOpenCVTests):
 
         _p1_mask_err = cv.calcOpticalFlowPyrLK(img1, img2, p0, None)
 
-        _p1_mask_err_umat0 = map(cv.UMat.get, cv.calcOpticalFlowPyrLK(img1, img2, p0_umat, None))
-        _p1_mask_err_umat1 = map(cv.UMat.get, cv.calcOpticalFlowPyrLK(cv.UMat(img1), img2, p0_umat, None))
-        _p1_mask_err_umat2 = map(cv.UMat.get, cv.calcOpticalFlowPyrLK(img1, cv.UMat(img2), p0_umat, None))
-
-        # # results of OCL optical flow differs from CPU implementation, so result can not be easily compared
-        # for p1_mask_err_umat in [p1_mask_err_umat0, p1_mask_err_umat1, p1_mask_err_umat2]:
-        #     for data, data_umat in zip(p1_mask_err, p1_mask_err_umat):
-        #         self.assertTrue(np.allclose(data, data_umat))
+        _p1_mask_err_umat0 = list(map(lambda umat: umat.get(), cv.calcOpticalFlowPyrLK(img1, img2, p0_umat, None)))
+        _p1_mask_err_umat1 = list(map(lambda umat: umat.get(), cv.calcOpticalFlowPyrLK(cv.UMat(img1), img2, p0_umat, None)))
+        _p1_mask_err_umat2 = list(map(lambda umat: umat.get(), cv.calcOpticalFlowPyrLK(img1, cv.UMat(img2), p0_umat, None)))
+
+        for _p1_mask_err_umat in [_p1_mask_err_umat0, _p1_mask_err_umat1, _p1_mask_err_umat2]:
+            for data, data_umat in zip(_p1_mask_err, _p1_mask_err_umat):
+                self.assertEqual(data.shape, data_umat.shape)
+                self.assertEqual(data.dtype, data_umat.dtype)
+        for _p1_mask_err_umat in [_p1_mask_err_umat1, _p1_mask_err_umat2]:
+            for data_umat0, data_umat in zip(_p1_mask_err_umat0[:2], _p1_mask_err_umat[:2]):
+                self.assertTrue(np.allclose(data_umat0, data_umat))
 
 if __name__ == '__main__':
     NewOpenCVTests.bootstrap()