45 #include <visp/vpDebug.h>
46 #include <visp/vpConfig.h>
51 #if (defined (VISP_HAVE_X11) || defined(VISP_HAVE_GTK) || defined(VISP_HAVE_GDI))
53 #include <visp/vpImage.h>
54 #include <visp/vpImageIo.h>
55 #include <visp/vpDisplayX.h>
56 #include <visp/vpDisplayGTK.h>
57 #include <visp/vpDisplayGDI.h>
58 #include <visp/vpDot2.h>
59 #include <visp/vpFeatureEllipse.h>
60 #include <visp/vpCameraParameters.h>
61 #include <visp/vpFeatureBuilder.h>
62 #include <visp/vpParseArgv.h>
63 #include <visp/vpIoTools.h>
72 #define GETOPTARGS "cdi:h"
74 bool getOptions(
int argc,
const char **argv, std::string &ipath,
75 bool &click_allowed,
bool &display);
77 void usage(
const char *name,
const char *badparam, std::string ipath);
87 void usage(
const char *name,
const char *badparam, std::string ipath)
93 %s [-i <input image path>] [-c] [-d] [-h]\n", name);
97 -i <input image path> %s\n\
98 Set image input path.\n\
99 From this path read image \n\
100 \"ViSP-images/ellipse/ellipse.pgm\"\n\
101 Setting the VISP_INPUT_IMAGE_PATH environment\n\
102 variable produces the same behaviour than using\n\
106 Disable the mouse click. Useful to automaze the \n\
107 execution of this program without humain intervention.\n\
110 Turn off the display.\n\
117 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
132 bool getOptions(
int argc,
const char **argv, std::string &ipath,
133 bool &click_allowed,
bool &display)
140 case 'c': click_allowed =
false;
break;
141 case 'd': display =
false;
break;
142 case 'i': ipath = optarg_;
break;
143 case 'h': usage(argv[0], NULL, ipath);
return false;
break;
146 usage(argv[0], optarg_, ipath);
151 if ((c == 1) || (c == -1)) {
153 usage(argv[0], NULL, ipath);
154 std::cerr <<
"ERROR: " << std::endl;
155 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
164 main(
int argc,
const char ** argv)
167 std::string env_ipath;
168 std::string opt_ipath;
171 std::string filename;
172 bool opt_click_allowed =
true;
173 bool opt_display =
true;
176 char *ptenv = getenv(
"VISP_INPUT_IMAGE_PATH");
181 if (! env_ipath.empty())
186 if (getOptions(argc, argv, opt_ipath,
187 opt_click_allowed, 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;
229 filename = dirname +
"ellipse.pgm";
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."
258 #if defined VISP_HAVE_X11
260 #elif defined VISP_HAVE_GTK
262 #elif defined VISP_HAVE_GDI
268 display.
init(I, 100, 100,
"Display...") ;
280 std::cout <<
"debut 1\n";
302 if (opt_click_allowed) {
303 std::cout <<
"A click to exit..." << std::endl;
310 std::cout <<
"Catch an exception: " << e << std::endl;
318 vpERROR_TRACE(
"You do not have X11, GTK or GDI display functionalities...");
Display for windows using GDI (available on any windows 32 platform).
Define the X11 console to display images.
error that can be emited by ViSP classes.
This tracker is meant to track a blob (connex pixels with same gray level) on a vpImage.
void track(const vpImage< unsigned char > &I)
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)
static void display(const vpImage< unsigned char > &I)
Generic class defining intrinsic camera parameters.
The vpDisplayGTK allows to display image using the GTK+ library version 1.2.
void setComputeMoments(const bool activate)
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const char *title=NULL)
void set_j(const double jj)
void display(const vpCameraParameters &cam, const vpImage< unsigned char > &I, const vpColor &color=vpColor::green, unsigned int thickness=1) const
void initTracking(const vpImage< unsigned char > &I, unsigned int size=0)
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 ...
Class that defines 2D ellipse visual feature.
static void create(vpFeaturePoint &s, const vpCameraParameters &cam, const vpDot &d)
static void read(vpImage< unsigned char > &I, const char *filename)
void setGraphics(const bool activate)