ViSP  2.8.0
tutorial-mb-klt-tracker.cpp
1 
2 #include <visp/vpDisplayGDI.h>
3 #include <visp/vpDisplayX.h>
4 #include <visp/vpImageIo.h>
5 #include <visp/vpMbKltTracker.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 keypoints tracker");;
18 #elif defined(VISP_HAVE_GDI)
19  vpDisplayGDI display(I,100,100,"Model-based keypoints tracker");;
20 #else
21  std::cout << "No image viewer is available..." << std::endl;
22 #endif
23 
24  vpMbKltTracker tracker;
25 #ifdef VISP_HAVE_XML2
26  tracker.loadConfigFile("teabox.xml");
27 #else
28  tracker.setAngleAppear(70);
29  tracker.setAngleDisappear(80);
30  tracker.setMaskBorder(5);
31  vpKltOpencv klt_settings;
32  klt_settings.setMaxFeatures(300);
33  klt_settings.setWindowSize(5);
34  klt_settings.setQuality(0.015);
35  klt_settings.setMinDistance(8);
36  klt_settings.setHarrisFreeParameter(0.01);
37  klt_settings.setBlockSize(3);
38  klt_settings.setPyramidLevels(3);
39  tracker.setKltOpencv(klt_settings);
40  cam.initPersProjWithoutDistortion(839, 839, 325, 243);
41  tracker.setCameraParameters(cam);
42  tracker.setNearClippingDistance(0.1);
43  tracker.setFarClippingDistance(100.0);
45 #endif
46  tracker.setDisplayFeatures(true);
47  tracker.setOgreVisibilityTest(true);
48  tracker.loadModel("teabox-triangle.cao");
49  tracker.initClick(I, "teabox.init");
50 
51  while(1){
53  tracker.track(I);
54  tracker.getPose(cMo);
55  tracker.getCameraParameters(cam);
56  tracker.display(I, cMo, cam, vpColor::red, 2, true);
57  vpDisplay::displayFrame(I, cMo, cam, 0.025, vpColor::none, 3);
59 
60  if (vpDisplay::getClick(I, false))
61  break;
62  vpTime::wait(40);
63  }
64 
65 #ifdef VISP_HAVE_XML2
67 #endif
68 #ifdef VISP_HAVE_COIN
69  SoDB::finish();
70 #endif
71 
72 #endif
73 }
void setKltOpencv(const vpKltOpencv &t)
virtual void track(const vpImage< unsigned char > &I)
void setQuality(double input)
Definition: vpKltOpencv.h:263
The class provides a data structure for the homogeneous matrices as well as a set of operations on th...
Display for windows using GDI (available on any windows 32 platform).
Definition: vpDisplayGDI.h:133
Define the X11 console to display images.
Definition: vpDisplayX.h:152
static const vpColor none
Definition: vpColor.h:179
void setPyramidLevels(const int input)
Definition: vpKltOpencv.h:262
void setBlockSize(const int input)
Definition: vpKltOpencv.h:218
static int wait(double t0, double t)
Definition: vpTime.cpp:149
static void flush(const vpImage< unsigned char > &I)
Definition: vpDisplay.cpp:1991
static const vpColor red
Definition: vpColor.h:167
virtual void loadConfigFile(const std::string &configFile)
void initPersProjWithoutDistortion(const double px, const double py, const double u0, const double v0)
virtual void setAngleAppear(const double &a)
void setWindowSize(const int input)
Definition: vpKltOpencv.h:273
static void display(const vpImage< unsigned char > &I)
Definition: vpDisplay.cpp:203
virtual unsigned int getClipping() const
Generic class defining intrinsic camera parameters.
virtual void loadModel(const std::string &modelFile)
Model based tracker using only KLT.
virtual void initClick(const vpImage< unsigned char > &I, const std::string &initFile, const bool displayHelp=false)
static void displayFrame(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, double size, const vpColor &color, unsigned int thickness=1)
Definition: vpDisplay.cpp:368
virtual void setAngleDisappear(const double &a)
virtual void getCameraParameters(vpCameraParameters &cam) const
Definition: vpMbTracker.h:158
static void cleanup()
Definition: vpXmlParser.h:220
void setMaskBorder(const unsigned int &e)
void setCameraParameters(const vpCameraParameters &cam)
virtual void setOgreVisibilityTest(const bool &v)
Wrapper for the KLT (Kanade-Lucas-Tomasi) feature tracker implemented in OpenCV.
Definition: vpKltOpencv.h:103
virtual void setNearClippingDistance(const double &dist)
virtual void setClipping(const unsigned int &flags)
virtual bool getClick(bool blocking=true)=0
void setDisplayFeatures(const bool displayF)
Definition: vpMbTracker.h:247
void setMaxFeatures(const int input)
static void read(vpImage< unsigned char > &I, const char *filename)
Definition: vpImageIo.cpp:277
void getPose(vpHomogeneousMatrix &cMo) const
Definition: vpMbTracker.h:177
void setMinDistance(double input)
Definition: vpKltOpencv.h:242
virtual void setFarClippingDistance(const double &dist)
virtual void display(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, const unsigned int thickness=1, const bool displayFullModel=false)
void setHarrisFreeParameter(double input)
Definition: vpKltOpencv.h:226