55 #include <visp/vpDebug.h>
56 #include <visp/vpConfig.h>
63 #if (defined (VISP_HAVE_X11) || defined(VISP_HAVE_GTK) || defined(VISP_HAVE_GDI))
65 #include <visp/vpImage.h>
66 #include <visp/vpImageIo.h>
67 #include <visp/vpImagePoint.h>
68 #include <visp/vpDisplayX.h>
69 #include <visp/vpDisplayGTK.h>
70 #include <visp/vpDisplayGDI.h>
71 #include <visp/vpColor.h>
73 #include <visp/vpMeNurbs.h>
74 #include <visp/vpParseArgv.h>
75 #include <visp/vpIoTools.h>
76 #include <visp/vpVideoReader.h>
79 #define GETOPTARGS "cdi:h"
90 void usage(
const char *name,
const char *badparam, std::string ipath)
93 Tracking of a nurbs using vpMe.\n\
96 %s [-i <input image path>] [-c] [-d] [-h]\n", name);
100 -i <input image path> %s\n\
101 Set image input path.\n\
102 From this path read images \n\
103 \"ViSP-images/ellipse-1/image.%%04d.pgm\"\n\
104 Setting the VISP_INPUT_IMAGE_PATH environment\n\
105 variable produces the same behaviour than using\n\
109 Disable the mouse click. Useful to automaze the \n\
110 execution of this program without humain intervention.\n\
113 Turn off the display.\n\
120 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
135 bool getOptions(
int argc,
const char **argv, std::string &ipath,
bool &click_allowed,
bool &display)
142 case 'c': click_allowed =
false;
break;
143 case 'd': display =
false;
break;
144 case 'i': ipath = optarg;
break;
145 case 'h': usage(argv[0], NULL, ipath);
return false;
break;
148 usage(argv[0], optarg, ipath);
153 if ((c == 1) || (c == -1)) {
155 usage(argv[0], NULL, ipath);
156 std::cerr <<
"ERROR: " << std::endl;
157 std::cerr <<
" Bad argument " << optarg << std::endl << std::endl;
166 main(
int argc,
const char ** argv)
168 std::string env_ipath;
169 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, opt_click_allowed, opt_display) ==
false) {
191 if (!opt_ipath.empty())
196 if (!opt_ipath.empty() && !env_ipath.empty()) {
197 if (ipath != env_ipath) {
198 std::cout << std::endl
199 <<
"WARNING: " << std::endl;
200 std::cout <<
" Since -i <visp image path=" << ipath <<
"> "
201 <<
" is different from VISP_IMAGE_PATH=" << env_ipath << std::endl
202 <<
" we skip the environment variable." << std::endl;
207 if (opt_ipath.empty() && env_ipath.empty()){
208 usage(argv[0], NULL, ipath);
209 std::cerr << std::endl
210 <<
"ERROR:" << std::endl;
211 std::cerr <<
" Use -i <visp image path> option or set VISP_INPUT_IMAGE_PATH "
213 <<
" environment variable to specify the location of the " << std::endl
214 <<
" image path where test images are located." << std::endl << std::endl;
225 filename = ipath +
vpIoTools::path(
"/ViSP-images/ellipse-1/image.%04d.pgm");
235 #if defined VISP_HAVE_X11
237 #elif defined VISP_HAVE_GTK
239 #elif defined VISP_HAVE_GDI
246 display.
init(I, 100, 100,
"Display...") ;
275 if (opt_click_allowed)
277 std::cout <<
"Click on points along the edge with the left button." << std::endl;
278 std::cout <<
"Then click on the right button to continue." << std::endl;
284 std::list<vpImagePoint> list;
299 if (opt_display && opt_click_allowed) {
300 std::cout <<
"A click to continue..." << std::endl;
303 std::cout <<
"------------------------------------------------------------"<<std::endl;
306 for (
int iter = 1 ; iter < 40 ; iter++)
331 if (opt_display && opt_click_allowed) {
332 std::cout <<
"A click to exit..." << std::endl;
340 vpERROR_TRACE(
"You do not have X11, GTK or GDI display functionalities...");
void setFirstFrameIndex(const long firstFrame)
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.
Class that enables to manipulate easily a video file or a sequence of images. As it inherits from the...
Contains predetermined masks for sites and holds moving edges tracking parameters.
static int wait(double t0, double t)
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 open(vpImage< vpRGBa > &I)
bool getFrame(vpImage< vpRGBa > &I, long frame)
void setDisplay(vpMeSite::vpMeSiteDisplayType select)
static void display(const vpImage< unsigned char > &I)
The vpDisplayGTK allows to display image using the GTK+ library version 1.2.
void setFileName(const char *filename)
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const char *title=NULL)
void setThreshold(const double &t)
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)