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 
14 #include <iostream>
15 
16 using namespace std;
17 using namespace mrpt;
18 using namespace mrpt::img;
19 using namespace mrpt::vision;
20 using namespace mrpt::system;
21 using namespace mrpt::gui;
22 
23 #include <mrpt/examples_config.h>
25  MRPT_EXAMPLES_BASE_DIRECTORY + string("vision_multiple_checkerboards/");
26 
27 // ------------------------------------------------------
28 // TestMultipleCheckerboard
29 // ------------------------------------------------------
31  const std::string& img_filename, const unsigned int checkerboard_size_x,
32  const unsigned int checkerboard_size_y)
33 {
34  CTimeLogger timlog;
35 
36  // Load img:
37  CImage img;
38  if (!img.loadFromFile(img_filename))
39  throw std::runtime_error("Can't load image!");
40 
41  // Detect multiple-checkerboards:
42  vector<vector<TPixelCoordf>> listCornerCoords;
43 
44  timlog.enter("findMultipleChessboardsCorners");
45 
47  img, listCornerCoords, checkerboard_size_x, checkerboard_size_y);
48 
49  timlog.leave("findMultipleChessboardsCorners");
50 
51  cout << "Number of checkerboards detected: " << listCornerCoords.size()
52  << endl;
53 
54  // Draw:
55  CImage img_detect;
56  img.colorImage(img_detect);
57  for (size_t i = 0; i < listCornerCoords.size(); i++)
58  img_detect.drawChessboardCorners(
59  listCornerCoords[i], checkerboard_size_x, checkerboard_size_y);
60 
61  // Show results:
62  CDisplayWindow win1("Detected checkerboards ");
63  win1.showImage(img_detect);
64 
65  timlog.dumpAllStats();
66  timlog.clear();
67 
68  // wait till user closes any window:
69  win1.waitForKey();
70 }
71 
72 // ------------------------------------------------------
73 // MAIN
74 // ------------------------------------------------------
75 int main(int argc, char** argv)
76 {
77  try
78  {
79  std::string sFile = myDataDir + string("test_3_checkerboards_5x4.jpg");
80  unsigned int checkerboard_size_x = 5;
81  unsigned int checkerboard_size_y = 4;
82 
83  if (argc == 4)
84  {
85  sFile = std::string(argv[1]);
86  checkerboard_size_x = atoi(argv[2]);
87  checkerboard_size_y = atoi(argv[3]);
88  }
89  else if (argc != 1)
90  {
91  std::cerr << "Usage: " << argv[0] << " [IMAGE_FILE NX NY]\n";
92  return 1;
93  }
94 
96  sFile, checkerboard_size_x, checkerboard_size_y);
97  return 0;
98  }
99  catch (std::exception& e)
100  {
101  std::cout << "MRPT exception caught: " << e.what() << std::endl;
102  return -1;
103  }
104  catch (...)
105  {
106  printf("Untyped exception!!");
107  return -1;
108  }
109 }
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
mrpt::vision
Classes for computer vision, detectors, features, etc.
Definition: CCamModel.h:20
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::img::CImage::colorImage
void colorImage(CImage &ret) const
Returns a RGB version of the grayscale image, or itself if it is already a RGB image.
Definition: CImage.cpp:2391
mrpt::system::CTimeLogger::enter
void enter(const char *func_name)
Start of a named section.
Definition: system/CTimeLogger.h:116
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
chessboard_camera_calib.h
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::vision::findMultipleChessboardsCorners
void findMultipleChessboardsCorners(const mrpt::img::CImage &img, std::vector< std::vector< mrpt::img::TPixelCoordf >> &cornerCoords, unsigned int check_size_x, unsigned int check_size_y)
Look for the corners of one or more chessboard/checkerboards in the image.
Definition: checkerboard_find_corners.cpp:135
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
string
GLsizei const GLchar ** string
Definition: glext.h:4101
TestMultipleCheckerboard
void TestMultipleCheckerboard(const std::string &img_filename, const unsigned int checkerboard_size_x, const unsigned int checkerboard_size_y)
Definition: vision_stereo_rectify/test.cpp:30
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
CDisplayWindow.h
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