Update to 2.0.0 tree from current Fremantle build
[opencv] / tests / swig_python / feature_tree_tests.py
1 #!/usr/bin/env python
2
3 # 2009-01-16, Xavier Delacour <xavier.delacour@gmail.com>
4
5 import unittest
6 from numpy import *;
7 from numpy.linalg import *;
8 import sys;
9 import cvtestutils
10 from cv import *;
11 from adaptors import *;
12
13 def planted_neighbors(query_points, R = .4):
14     n,d = query_points.shape
15     data = zeros(query_points.shape)
16     for i in range(0,n):
17         a = random.rand(d)
18         a = random.rand()*R*a/sqrt(sum(a**2))
19         data[i] = query_points[i] + a
20     return data
21
22 class feature_tree_test(unittest.TestCase):
23
24     def test_kdtree_basic(self):
25         n = 1000;
26         d = 64;
27         query_points = random.rand(n,d)*2-1;
28         data = planted_neighbors(query_points)
29
30         tr = cvCreateKDTree(data);
31         indices,dist = cvFindFeatures(tr, query_points, 1, 100);
32
33         correct = sum([i == j for j,i in enumerate(indices)])
34         assert(correct >= n * .75);
35
36     def test_spilltree_basic(self):
37         n = 1000;
38         d = 64;
39         query_points = random.rand(n,d)*2-1;
40         data = planted_neighbors(query_points)
41
42         tr = cvCreateSpillTree(data);
43         indices,dist = cvFindFeatures(tr, query_points, 1, 100);
44
45         correct = sum([i == j for j,i in enumerate(indices)])
46         assert(correct >= n * .75);
47
48 def suite():
49     return unittest.TestLoader().loadTestsFromTestCase(feature_tree_test)
50
51 if __name__ == '__main__':
52     suite = suite()
53     unittest.TextTestRunner(verbosity=2).run(suite)
54