1#!/usr/bin/env python 2 3# Python 2/3 compatibility 4from __future__ import print_function 5 6import os 7 8import cv2 as cv 9 10from tests_common import NewOpenCVTests 11 12SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) 13MODULE_DIR = os.path.join(SCRIPT_DIR, '../../../') 14 15class shape_test(NewOpenCVTests): 16 17 def test_computeDistance(self): 18 19 a = cv.imread(os.path.join(MODULE_DIR, 'samples/data/shape_sample/1.png'), cv.IMREAD_GRAYSCALE) 20 b = cv.imread(os.path.join(MODULE_DIR, 'samples/data/shape_sample/2.png'), cv.IMREAD_GRAYSCALE) 21 if a is None or b is None: 22 raise unittest.SkipTest("Missing files with test data") 23 24 ca, _ = cv.findContours(a, cv.RETR_CCOMP, cv.CHAIN_APPROX_TC89_KCOS) 25 cb, _ = cv.findContours(b, cv.RETR_CCOMP, cv.CHAIN_APPROX_TC89_KCOS) 26 27 hd = cv.createHausdorffDistanceExtractor() 28 sd = cv.createShapeContextDistanceExtractor() 29 30 d1 = hd.computeDistance(ca[0], cb[0]) 31 d2 = sd.computeDistance(ca[0], cb[0]) 32 33 self.assertAlmostEqual(d1, 26.4196891785, 3, "HausdorffDistanceExtractor") 34 self.assertAlmostEqual(d2, 0.25804194808, 3, "ShapeContextDistanceExtractor") 35 36if __name__ == '__main__': 37 NewOpenCVTests.bootstrap() 38