ViSP
 All Classes Functions Variables Enumerations Enumerator Friends Groups Pages
tutorial-mb-hybrid-tracker.cpp
1 
2 #include <visp/vpDisplayGDI.h>
3 #include <visp/vpDisplayX.h>
4 #include <visp/vpImageIo.h>
5 #include <visp/vpMbEdgeKltTracker.h>
6 
7 int main()
8 {
9 #ifdef VISP_HAVE_OPENCV
13 
14  vpImageIo::read(I, "teabox.pgm");
15 
16 #if defined(VISP_HAVE_X11)
17  vpDisplayX display(I,100,100,"Model-based hybrid tracker");;
18 #elif defined(VISP_HAVE_GDI)
19  vpDisplayGDI display(I,100,100,"Model-based hybrid tracker");;
20 #else
21  std::cout << "No image viewer is available..." << std::endl;
22 #endif
23 
24  vpMbEdgeKltTracker tracker;
25 #ifdef VISP_HAVE_XML2
26  tracker.loadConfigFile("teabox.xml");
27 #else
28  vpMe me;
29  me.setMaskSize(5);
30  me.setMaskNumber(180);
31  me.setRange(8);
32  me.setThreshold(10000);
33  me.setMu1(0.5);
34  me.setMu2(0.5);
35  me.setSampleStep(4);
36  me.setNbTotalSample(250);
37  tracker.setMovingEdge(me);
38  tracker.setAngleAppear(70);
39  tracker.setAngleDisappear(80);
40  tracker.setMaskBorder(5);
41  vpKltOpencv klt_settings;
42  klt_settings.setMaxFeatures(300);
43  klt_settings.setWindowSize(5);
44  klt_settings.setQuality(0.015);
45  klt_settings.setMinDistance(8);
46  klt_settings.setHarrisFreeParameter(0.01);
47  klt_settings.setBlockSize(3);
48  klt_settings.setPyramidLevels(3);
49  tracker.setKltOpencv(klt_settings);
50  cam.initPersProjWithoutDistortion(839, 839, 325, 243);
51  tracker.setCameraParameters(cam);
52  tracker.setNearClippingDistance(0.1);
53  tracker.setFarClippingDistance(100.0);
55 #endif
56  tracker.setDisplayFeatures(true);
57  tracker.setOgreVisibilityTest(true);
58  tracker.loadModel("teabox.cao");
59  tracker.initClick(I, "teabox.init");
60 
61  while(1){
63  tracker.track(I);
64  tracker.getPose(cMo);
65  tracker.getCameraParameters(cam);
66  tracker.display(I, cMo, cam, vpColor::red, 2, true);
67  vpDisplay::displayFrame(I, cMo, cam, 0.025, vpColor::none, 3);
69 
70  if (vpDisplay::getClick(I, false))
71  break;
72  vpTime::wait(40);
73  }
74 
75 #ifdef VISP_HAVE_XML2
77 #endif
78 #ifdef VISP_HAVE_COIN
79  SoDB::finish();
80 #endif
81 
82 #endif
83 }