annotate c/test_feature.cpp @ 962:64259b9885bf

verbose option to print classification information (more to add)
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 06 Nov 2017 21:25:41 -0500
parents b6ad86ee7033
children 05ccd8ef150c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
1 #define CATCH_CONFIG_MAIN
162
61fd5aff418c added basics to run tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
2
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
3 #include "Motion.hpp"
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
4 #include "testutils.hpp"
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
5
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
6 #include "opencv2/core/core.hpp"
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
7
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
8 #include "catch.hpp"
162
61fd5aff418c added basics to run tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
9
61fd5aff418c added basics to run tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
10 using namespace std;
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
11 using namespace cv;
162
61fd5aff418c added basics to run tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
12
481
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
13 TEST_CASE("trajectory/smoothing", "test trajectory smoothing (from trajectory management library)") {
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
14 TrajectoryPoint2f t1;
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
15 for(int i=0; i<20;++i)
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
16 t1.add(i, cv::Point2f(1+i, 1+0.5*i));
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
17
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
18 TrajectoryPoint2f t2(t1);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
19 t2.movingAverage(3);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
20 for(int i=0; i<20;++i)
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
21 REQUIRE(t1.getPoint(i) == t2.getPoint(i));
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
22 t1.clear();
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
23 cv::Point2f p0(1,1);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
24 cv::Point2f p1(2,2);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
25 cv::Point2f p2(2.4,3);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
26 cv::Point2f p3(3.1,3.4);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
27 cv::Point2f p4(3.4,4);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
28 cv::Point2f p5(3.6,4.5);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
29
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
30 t1.add(0, p0);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
31 t1.add(1, p1);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
32 t1.add(2, p2);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
33 t1.add(3, p3);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
34 t1.add(4, p4);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
35 t1.add(5, p5);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
36 t1.movingAverage(2);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
37 REQUIRE(t1.getPoint(0) == p0);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
38 REQUIRE(t1.getPoint(1) == (p0+p1+p2)*(1./3.));
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
39 REQUIRE(t1.getPoint(2) == (p0+p1+p2+p3+p4)*(1./5.));
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
40 REQUIRE(t1.getPoint(3) == (p1+p2+p3+p4+p5)*(1./5.));
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
41 REQUIRE(t1.getPoint(4) == (p3+p4+p5)*(1./3.));
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
42 REQUIRE(t1.getPoint(5) == p5);
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
43 }
b6ad86ee7033 implemented smoothing (requires latest trajectory management library version)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 220
diff changeset
44
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
45 TEST_CASE("features/similarity", "test feature similarity measure") {
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
46 FeatureTrajectoryPtr ft1 = createFeatureTrajectory(1, 10, 20, Point2f(1,1), Point2f(0, 1));
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
47 FeatureTrajectoryPtr ft2 = createFeatureTrajectory(2, 10, 20, Point2f(2,1), Point2f(0, 1));
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
48
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
49 REQUIRE_FALSE(ft1->minMaxSimilarity(*ft2, 10, 20, 0.5, 0.1));
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
50 REQUIRE(ft1->minMaxSimilarity(*ft2, 10, 20, 1, 0.1));
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
51
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
52 ft2 = createFeatureTrajectory(2, 10, 19, Point2f(1,1), Point2f(0, 1));
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
53 Mat homography;
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
54 ft2->addPoint(20, Point2f(1,11.5), homography);
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
55
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
56 REQUIRE_FALSE(ft1->minMaxSimilarity(*ft2, 10, 20, 0, 0.4));
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
57 REQUIRE(ft1->minMaxSimilarity(*ft2, 10, 20, 0, 0.5));
162
61fd5aff418c added basics to run tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
58 }