54 #include <visp/vpDebug.h>
55 #include <visp/vpConfig.h>
62 #if (defined (VISP_HAVE_X11) || defined(VISP_HAVE_GTK) || defined(VISP_HAVE_GDI) || defined(VISP_HAVE_OPENCV))
64 #include <visp/vpImage.h>
65 #include <visp/vpImageIo.h>
66 #include <visp/vpDisplayX.h>
67 #include <visp/vpDisplayGTK.h>
68 #include <visp/vpDisplayGDI.h>
69 #include <visp/vpDisplayOpenCV.h>
70 #include <visp/vpColor.h>
72 #include <visp/vpMeEllipse.h>
73 #include <visp/vpParseArgv.h>
74 #include <visp/vpIoTools.h>
77 #define GETOPTARGS "cdi:h"
79 void usage(
const char *name,
const char *badparam, std::string ipath);
80 bool getOptions(
int argc,
const char **argv, std::string &ipath,
bool &click_allowed,
bool &display);
91 void usage(
const char *name,
const char *badparam, std::string ipath)
94 Test auto detection of dots using vpDot2.\n\
97 %s [-i <input image path>] [-c] [-d] [-h]\n", name);
101 -i <input image path> %s\n\
102 Set image input path.\n\
103 From this path read \"ViSP-images/circle/circle.pgm\"\n\
105 Setting the VISP_INPUT_IMAGE_PATH environment\n\
106 variable produces the same behaviour than using\n\
110 Disable the mouse click. Useful to automaze the \n\
111 execution of this program without humain intervention.\n\
114 Turn off the display.\n\
121 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
136 bool getOptions(
int argc,
const char **argv, std::string &ipath,
bool &click_allowed,
bool &display)
143 case 'c': click_allowed =
false;
break;
144 case 'd': display =
false;
break;
145 case 'i': ipath = optarg_;
break;
146 case 'h': usage(argv[0], NULL, ipath);
return false;
break;
149 usage(argv[0], optarg_, ipath);
154 if ((c == 1) || (c == -1)) {
156 usage(argv[0], NULL, ipath);
157 std::cerr <<
"ERROR: " << std::endl;
158 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
167 main(
int argc,
const char ** argv)
170 std::string env_ipath;
171 std::string opt_ipath;
174 std::string filename;
175 bool opt_click_allowed =
true;
176 bool opt_display =
true;
182 if (! env_ipath.empty())
186 if (getOptions(argc, argv, opt_ipath, opt_click_allowed,
187 opt_display) ==
false) {
192 if (!opt_ipath.empty())
197 if (!opt_ipath.empty() && !env_ipath.empty()) {
198 if (ipath != env_ipath) {
199 std::cout << std::endl
200 <<
"WARNING: " << std::endl;
201 std::cout <<
" Since -i <visp image path=" << ipath <<
"> "
202 <<
" is different from VISP_IMAGE_PATH=" << env_ipath << std::endl
203 <<
" we skip the environment variable." << std::endl;
208 if (opt_ipath.empty() && env_ipath.empty()){
209 usage(argv[0], NULL, ipath);
210 std::cerr << std::endl
211 <<
"ERROR:" << std::endl;
212 std::cerr <<
" Use -i <visp image path> option or set VISP_INPUT_IMAGE_PATH "
214 <<
" environment variable to specify the location of the " << std::endl
215 <<
" image path where test images are located." << std::endl << std::endl;
238 vpCTRACE <<
"Load: " << filename << std::endl;
248 std::cerr << std::endl
249 <<
"ERROR:" << std::endl;
250 std::cerr <<
" Cannot read " << filename << std::endl;
251 std::cerr <<
" Check your -i " << ipath <<
" option " << std::endl
252 <<
" or VISP_INPUT_IMAGE_PATH environment variable."
259 #if defined VISP_HAVE_X11
261 #elif defined VISP_HAVE_GTK
263 #elif defined VISP_HAVE_GDI
265 #elif defined VISP_HAVE_OPENCV
271 display.
init(I, 100, 100,
"Display...") ;
294 if (opt_display && opt_click_allowed) {
316 std::cout <<
"Tracking on image: " << filename << std::endl;
322 if (opt_display && opt_click_allowed) {
323 std::cout <<
"A click to exit..." << std::endl;
326 std::cout <<
"------------------------------------------------------------"<<std::endl;
330 std::cout <<
"Catch an exception: " << e << std::endl;
338 vpERROR_TRACE(
"You do not have X11, GTK, GDI or OpenCV display functionalities...");
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const char *title=NULL)
void initTracking(const vpImage< unsigned char > &I)
void setPointsToTrack(const int &n)
Display for windows using GDI (available on any windows 32 platform).
void setSampleStep(const double &s)
Define the X11 console to display images.
error that can be emited by ViSP classes.
Class that tracks an ellipse moving edges.
Contains predetermined masks for sites and holds moving edges tracking parameters.
static const vpColor green
static void flush(const vpImage< unsigned char > &I)
static bool parse(int *argcPtr, const char **argv, vpArgvInfo *argTable, int flags)
void set_i(const double ii)
void track(const vpImage< unsigned char > &Im)
void setDisplay(vpMeSite::vpMeSiteDisplayType select)
static void display(const vpImage< unsigned char > &I)
The vpDisplayOpenCV allows to display image using the opencv library.
void display(const vpImage< unsigned char > &I, vpColor col)
The vpDisplayGTK allows to display image using the GTK+ library version 1.2.
void set_j(const double jj)
void setThreshold(const double &t)
void setCircle(bool is_circle)
virtual bool getClick(bool blocking=true)=0
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
void setRange(const unsigned int &r)
static void read(vpImage< unsigned char > &I, const char *filename)
double getSampleStep() const