Mercurial > hg > nsaunier > traffic-intelligence
annotate c/test_graph.cpp @ 398:3399bd48cb40
Ajout d'une méthode pour obtenir le nombre de FPS
Méthode de capture des trames vidéos plus résistante aux erreur
Utilisation d'un dictionnaire pour les fichier de configuration afin de garder le nom des sections
| author | Jean-Philippe Jodoin <jpjodoin@gmail.com> |
|---|---|
| date | Mon, 29 Jul 2013 13:46:07 -0400 |
| parents | 03dbecd3a887 |
| children | 05ccd8ef150c |
| rev | line source |
|---|---|
|
196
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
1 #include "Motion.hpp" |
|
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
2 #include "testutils.hpp" |
|
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
3 |
|
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
4 #include "opencv2/core/core.hpp" |
|
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
5 |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
6 #include "catch.hpp" |
|
196
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
7 |
|
201
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
8 #include <iostream> |
|
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
9 |
|
196
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
10 using namespace std; |
|
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
11 using namespace cv; |
|
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
12 |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
13 TEST_CASE("graph/connected_components", "test graph connected components") { |
|
362
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
14 float connectionDistance = 5.; |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
15 float segmentationDistance = 1.; |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
16 unsigned int minFeatureTime = 5; |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
17 float minNFeaturesPerGroup = 0.99; |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
18 FeatureGraph featureGraph(connectionDistance, segmentationDistance, minFeatureTime, minNFeaturesPerGroup); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
19 unsigned int firstInstant = 10, lastInstant = 20; |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
20 FeatureTrajectoryPtr ft1 = createFeatureTrajectory(1, firstInstant, lastInstant, Point2f(1,1), Point2f(0.5, 0.)); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
21 FeatureTrajectoryPtr ft2 = createFeatureTrajectory(2, firstInstant, lastInstant, Point2f(1.1,1), Point2f(0.5, 0.)); |
|
196
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
22 |
|
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
23 featureGraph.addFeature(ft1); |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
24 REQUIRE(featureGraph.getNVertices() == 1); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
25 REQUIRE(featureGraph.getNEdges() == 0); |
|
196
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
26 |
|
200
0a27fa343257
added one test and cleaned the first and last instant mess
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
196
diff
changeset
|
27 featureGraph.addFeature(ft2); |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
28 REQUIRE(featureGraph.getNVertices() == 2); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
29 REQUIRE(featureGraph.getNEdges() == 1); |
|
196
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
30 |
|
201
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
31 featureGraph.connectedComponents(lastInstant); |
|
391
03dbecd3a887
modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
362
diff
changeset
|
32 vector<vector<FeatureTrajectoryPtr> > components; |
|
03dbecd3a887
modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
362
diff
changeset
|
33 featureGraph.getFeatureGroups(components); |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
34 REQUIRE(components.size() == 0); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
35 REQUIRE(featureGraph.getNVertices() == 2); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
36 REQUIRE(featureGraph.getNEdges() == 1); |
|
201
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
37 |
|
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
38 featureGraph.connectedComponents(lastInstant+1); |
|
391
03dbecd3a887
modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
362
diff
changeset
|
39 featureGraph.getFeatureGroups(components); |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
40 REQUIRE(components.size() == 1); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
41 REQUIRE(components[0].size() == 2); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
42 REQUIRE(featureGraph.getNVertices() == 0); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
43 REQUIRE(featureGraph.getNEdges() == 0); |
|
201
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
44 |
|
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
45 // test connection distance |
|
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
46 featureGraph.addFeature(ft1); |
|
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
47 featureGraph.addFeature(ft2); |
|
362
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
48 FeatureTrajectoryPtr ft3 = createFeatureTrajectory(3, firstInstant, lastInstant, Point2f(6.05,1), Point2f(0.5, 0.)); // connected to ft2 only |
|
201
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
49 featureGraph.addFeature(ft3); |
|
362
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
50 FeatureTrajectoryPtr ft4 = createFeatureTrajectory(4, firstInstant, lastInstant, Point2f(11.1,1), Point2f(0.5, 0.)); // not connected |
|
201
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
51 featureGraph.addFeature(ft4); |
|
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
52 |
|
362
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
53 REQUIRE(ft1->minMaxSimilarity(*ft2, firstInstant, lastInstant, connectionDistance, segmentationDistance)); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
54 REQUIRE(ft2->minMaxSimilarity(*ft3, firstInstant, lastInstant, connectionDistance, segmentationDistance)); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
55 REQUIRE_FALSE(ft1->minMaxSimilarity(*ft3, firstInstant, lastInstant, connectionDistance, segmentationDistance)); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
56 REQUIRE_FALSE(ft1->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance)); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
57 REQUIRE_FALSE(ft2->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance)); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
58 REQUIRE_FALSE(ft3->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance)); |
|
cc8e54997d4c
corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
231
diff
changeset
|
59 |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
60 REQUIRE(featureGraph.getNVertices() == 4); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
61 REQUIRE(featureGraph.getNEdges() == 2); |
|
201
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
62 |
|
f7ddfc4aeb1e
added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
200
diff
changeset
|
63 featureGraph.connectedComponents(lastInstant+1); |
|
391
03dbecd3a887
modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
362
diff
changeset
|
64 featureGraph.getFeatureGroups(components); |
|
220
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
65 REQUIRE(components.size() == 2); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
66 REQUIRE(components[0].size() == 3); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
67 REQUIRE(components[1].size() == 1); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
68 REQUIRE(featureGraph.getNVertices() == 0); |
|
f0f800b95765
switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
201
diff
changeset
|
69 REQUIRE(featureGraph.getNEdges() == 0); |
|
196
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
70 } |
