Main MRPT website > C++ reference for MRPT 1.9.9
test.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include <mrpt/img/CImage.h>
13 #include <mrpt/gui.h>
14 #include <iostream>
15 
16 using namespace std;
17 using namespace mrpt;
18 using namespace mrpt::img;
19 using namespace mrpt::system;
20 using namespace mrpt::gui;
21 
22 #include <mrpt/examples_config.h>
24  MRPT_EXAMPLES_BASE_DIRECTORY + string("vision_checkerboard_detectors/");
25 
26 // ------------------------------------------------------
27 // TestCheckerboardDetectors
28 // ------------------------------------------------------
30 {
31  CTimeLogger timlog;
32 
33  // Load img:
34  CImage img;
35  if (!img.loadFromFile(myDataDir + string("test_1_checkerboard_9x6.jpg")))
36  throw std::runtime_error("Can't load demo image!");
37 
38  // Detect multiple-checkerboards:
39  vector<TPixelCoordf> cornerCoords;
40  const unsigned int checkerboard_size_x = 6;
41  const unsigned int checkerboard_size_y = 9;
42 
43  // Detect:
44  timlog.enter("findChessboardCorners [OpenCV]");
45 
46  // bool detectOk1 =
48  img, cornerCoords, checkerboard_size_x, checkerboard_size_y,
49  true, // normalize_image
50  false // useScaramuzzaMethod
51  );
52 
53  timlog.leave("findChessboardCorners [OpenCV]");
54 
55  // Draw:
56  CImage img_detect1 = img;
57  img_detect1.drawChessboardCorners(
58  cornerCoords, checkerboard_size_x, checkerboard_size_y);
59 
60  timlog.enter("findChessboardCorners [Scaramuzza]");
61 
62  // bool detectOk2 =
64  img, cornerCoords, checkerboard_size_x, checkerboard_size_y,
65  true, // normalize_image
66  true // useScaramuzzaMethod
67  );
68 
69  timlog.leave("findChessboardCorners [Scaramuzza]");
70 
71  // Draw:
72  CImage img_detect2 = img;
73  img_detect2.drawChessboardCorners(
74  cornerCoords, checkerboard_size_x, checkerboard_size_y);
75 
76  // ASSERT_(detectOk1 && detectOk2);
77 
78  // Show results:
79  CDisplayWindow win1("Detected checkerboard (OpenCV)");
80  win1.showImage(img_detect1);
81 
82  CDisplayWindow win2("Detected checkerboard (Scaramuzza)");
83  win2.showImage(img_detect2);
84 
85  timlog.dumpAllStats();
86  timlog.clear();
87 
88  // wait till user closes any window:
89  while (win1.isOpen() && win2.isOpen())
90  {
91  std::this_thread::sleep_for(10ms);
92  }
93 }
94 
95 // ------------------------------------------------------
96 // MAIN
97 // ------------------------------------------------------
98 int main()
99 {
100  try
101  {
103  return 0;
104  }
105  catch (std::exception& e)
106  {
107  std::cout << "MRPT exception caught: " << e.what() << std::endl;
108  return -1;
109  }
110  catch (...)
111  {
112  printf("Untyped exception!!");
113  return -1;
114  }
115 }
mrpt::system::CTimeLogger
A versatile "profiler" that logs the time spent within each pair of calls to enter(X)-leave(X),...
Definition: system/CTimeLogger.h:43
myDataDir
std::string myDataDir
Definition: vision_stereo_rectify/test.cpp:23
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CKalmanFilterCapable.h:30
mrpt::system::CTimeLogger::enter
void enter(const char *func_name)
Start of a named section.
Definition: system/CTimeLogger.h:116
TestCheckerboardDetectors
void TestCheckerboardDetectors()
Definition: vision_stereo_rectify/test.cpp:29
mrpt::system::CTimeLogger::dumpAllStats
void dumpAllStats(const size_t column_width=80) const
Dump all stats through the COutputLogger interface.
Definition: CTimeLogger.cpp:207
mrpt::system::CTimeLogger::clear
void clear(bool deep_clear=false)
Resets all stats.
Definition: CTimeLogger.cpp:99
mrpt::system::CTimeLogger::leave
double leave(const char *func_name)
End of a named section.
Definition: system/CTimeLogger.h:122
main
int main()
Definition: vision_stereo_rectify/test.cpp:78
mrpt::img
Definition: CCanvas.h:17
mrpt::gui::CDisplayWindow
This class creates a window as a graphical user interface (GUI) for displaying images to the user.
Definition: CDisplayWindow.h:30
mrpt::gui
Classes for creating GUI windows for 2D and 3D visualization.
Definition: about_box.h:16
mrpt::img::CImage
A class for storing images as grayscale or RGB bitmaps.
Definition: img/CImage.h:130
img
GLint GLvoid * img
Definition: glext.h:3763
CTimeLogger.h
mrpt::vision::findChessboardCorners
bool findChessboardCorners(const mrpt::img::CImage &img, std::vector< mrpt::img::TPixelCoordf > &cornerCoords, unsigned int check_size_x, unsigned int check_size_y, bool normalize_image=true, bool useScaramuzzaMethod=false)
Look for the corners of a chessboard in the image using one of two different methods.
Definition: checkerboard_find_corners.cpp:35
gui.h
string
GLsizei const GLchar ** string
Definition: glext.h:4101
CImage.h
mrpt::img::CImage::drawChessboardCorners
bool drawChessboardCorners(std::vector< TPixelCoordf > &cornerCoords, unsigned int check_size_x, unsigned int check_size_y, unsigned int lines_width=1, unsigned int circles_radius=4)
Draw onto this image the detected corners of a chessboard.
Definition: CImage.cpp:2327
chessboard_find_corners.h
mrpt::system
This namespace provides a OS-independent interface to many useful functions: filenames manipulation,...
Definition: math_frwds.h:25



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST