47 #include <visp3/core/vpDebug.h> 48 #include <visp3/core/vpConfig.h> 50 #if ( defined(VISP_HAVE_D3D9) ) 52 #include <visp3/gui/vpDisplayD3D.h> 54 #include <visp3/core/vpImage.h> 55 #include <visp3/io/vpImageIo.h> 56 #include <visp3/io/vpParseArgv.h> 57 #include <visp3/core/vpIoTools.h> 69 #define GETOPTARGS "cdi:o:h" 84 void usage(
const char *name,
const char *badparam, std::string ipath, std::string opath, std::string user)
87 Read an image on the disk, display it using D3D, display some\n\ 88 features (line, circle, caracters) in overlay and finaly write \n\ 89 the image and the overlayed features in an image on the disk\n\ 92 %s [-i <input image path>] [-o <output image path>]\n\ 98 -i <input image path> %s\n\ 99 Set image input path.\n\ 100 From this path read \"ViSP-images/Klimt/Klimt.pgm\"\n\ 102 Setting the VISP_INPUT_IMAGE_PATH environment\n\ 103 variable produces the same behaviour than using\n\ 106 -o <output image path> %s\n\ 107 Set image output path.\n\ 108 From this directory, creates the \"%s\"\n\ 109 subdirectory depending on the username, where \n\ 110 Klimt_grey.overlay.ppm output image is written.\n\ 113 Disable the mouse click. Useful to automate the \n\ 114 execution of this program without humain intervention.\n\ 117 Disable the image display. This can be useful \n\ 118 for automatic tests using the task manager under \n\ 122 Print the help.\n\n",
123 ipath.c_str(), opath.c_str(), user.c_str());
125 fprintf(stderr,
"ERROR: \n" );
126 fprintf(stderr,
"\nBad parameter [%s]\n", badparam);
145 bool getOptions(
int argc,
const char **argv,
146 std::string &ipath, std::string &opath,
bool &click_allowed,
147 std::string user,
bool &display)
154 case 'c': click_allowed =
false;
break;
155 case 'd': display =
false;
break;
156 case 'i': ipath = optarg;
break;
157 case 'o': opath = optarg;
break;
158 case 'h': usage(argv[0], NULL, ipath, opath, user);
return false;
break;
161 usage(argv[0], optarg, ipath, opath, user);
return false;
break;
165 if ((c == 1) || (c == -1)) {
167 usage(argv[0], NULL, ipath, opath, user);
168 std::cerr <<
"ERROR: " << std::endl;
169 std::cerr <<
" Bad argument " << optarg << std::endl << std::endl;
177 main(
int argc,
const char ** argv)
180 std::string env_ipath;
181 std::string opt_ipath;
182 std::string opt_opath;
185 std::string filename;
186 std::string username;
187 bool opt_click_allowed =
true;
188 bool opt_display =
true;
194 if (! env_ipath.empty())
198 opt_opath =
"C:\\temp";
205 if (getOptions(argc, argv, opt_ipath, opt_opath,
206 opt_click_allowed, username, opt_display) ==
false) {
211 if (!opt_ipath.empty())
213 if (!opt_opath.empty())
226 usage(argv[0], NULL, ipath, opath, username);
227 std::cerr << std::endl
228 <<
"ERROR:" << std::endl;
229 std::cerr <<
" Cannot create " << odirname << std::endl;
230 std::cerr <<
" Check your -o " << opath <<
" option " << std::endl;
237 if (!opt_ipath.empty() && !env_ipath.empty()) {
238 if (ipath != env_ipath) {
239 std::cout << std::endl
240 <<
"WARNING: " << std::endl;
241 std::cout <<
" Since -i <visp image path=" << ipath <<
"> " 242 <<
" is different from VISP_IMAGE_PATH=" << env_ipath << std::endl
243 <<
" we skip the environment variable." << std::endl;
248 if (opt_ipath.empty() && env_ipath.empty()){
249 usage(argv[0], NULL, ipath, opath, username);
250 std::cerr << std::endl
251 <<
"ERROR:" << std::endl;
252 std::cerr <<
" Use -i <visp image path> option or set VISP_INPUT_IMAGE_PATH " 254 <<
" environment variable to specify the location of the " << std::endl
255 <<
" image path where test images are located." << std::endl << std::endl;
273 display.
init(I, 100, 100,
"X11 display") ;
286 for (
unsigned i=0 ; i < I.
getHeight() ; i+=20) {
303 for (
unsigned i=0 ; i < I.
getWidth() ; i+=20) {
326 for (
unsigned int i=0 ; i < 100 ; i+=20) {
340 "ViSP is a marvelous software",
355 if (opt_click_allowed) {
356 std::cout <<
"\nA click to close the windows..." << std::endl;
378 displayRGBa.
init(Irgba, 100, 100,
"X11 color display");
386 if (opt_click_allowed) {
387 std::cout <<
"\nA click to display a cross..." << std::endl;
392 std::cout <<
"Cross position: " << ip << std::endl;
400 std::cout <<
"Cross position: " << ip << std::endl;
418 if (opt_click_allowed) {
419 std::cout <<
"\nA click to exit the program..." << std::endl;
421 std::cout <<
"Bye" << std::endl;
427 std::cout <<
"Catch an exception: " << e << std::endl;
virtual void displayCircle(const vpImagePoint ¢er, unsigned int radius, const vpColor &color, bool fill=false, unsigned int thickness=1)=0
static void write(const vpImage< unsigned char > &I, const char *filename)
virtual void displayArrow(const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color=vpColor::white, unsigned int w=4, unsigned int h=2, unsigned int thickness=1)=0
static void close(vpImage< unsigned char > &I)
unsigned int getWidth() const
static void displayText(const vpImage< unsigned char > &I, const vpImagePoint &ip, const std::string &s, const vpColor &color)
error that can be emited by ViSP classes.
static const vpColor green
static void flush(const vpImage< unsigned char > &I)
static bool parse(int *argcPtr, const char **argv, vpArgvInfo *argTable, int flags)
static const vpColor orange
Display for windows using Direct3D.
void set_i(const double ii)
static void display(const vpImage< unsigned char > &I)
virtual void displayCross(const vpImagePoint &ip, unsigned int size, const vpColor &color, unsigned int thickness=1)=0
virtual void displayRectangle(const vpImagePoint &topLeft, unsigned int width, unsigned int height, const vpColor &color, bool fill=false, unsigned int thickness=1)=0
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const char *title=NULL)
static void getImage(const vpImage< unsigned char > &Is, vpImage< vpRGBa > &Id)
virtual void displayDotLine(const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color, unsigned int thickness=1)=0
void set_j(const double jj)
unsigned int getHeight() const
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 ...
virtual void displayLine(const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color, unsigned int thickness=1)=0
static void read(vpImage< unsigned char > &I, const char *filename)
static const vpColor yellow
static const vpColor blue