39 #include <visp3/core/vpConfig.h>
40 #include <visp3/core/vpDebug.h>
46 #if (defined(VISP_HAVE_GTK) || defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI) || defined(VISP_HAVE_D3D9) || \
47 defined(VISP_HAVE_OPENCV))
49 #include <visp3/core/vpImage.h>
50 #include <visp3/core/vpIoTools.h>
51 #include <visp3/core/vpRect.h>
52 #include <visp3/io/vpImageIo.h>
53 #include <visp3/io/vpParseArgv.h>
55 #include <visp3/gui/vpDisplayD3D.h>
56 #include <visp3/gui/vpDisplayGDI.h>
57 #include <visp3/gui/vpDisplayGTK.h>
58 #include <visp3/gui/vpDisplayOpenCV.h>
59 #include <visp3/gui/vpDisplayX.h>
68 #define GETOPTARGS "hldc"
76 static void usage(
const char *name,
const char *badparam)
79 Test video devices or display.\n\
82 %s [-l] [-c] [-d] [-h]\n\
89 Disable the mouse click. Useful to automaze the \n\
90 execution of this program without humain intervention.\n\
93 Turn off the display.\n\
96 Print the list of video-devices available and exit.\n\
99 Print the help.\n\n");
102 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
115 static bool getOptions(
int argc,
const char **argv,
bool &list,
bool &click_allowed,
bool &display)
126 usage(argv[0], NULL);
130 click_allowed =
false;
137 usage(argv[0], optarg_);
143 if ((c == 1) || (c == -1)) {
145 usage(argv[0], NULL);
146 std::cerr <<
"ERROR: " << std::endl;
147 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
244 vpRect rectangle(iP1, iP2);
251 std::vector<vpImagePoint> polygon;
266 template <
typename Type>
static void runTest(
bool opt_display,
bool opt_click_allowed)
274 #if defined VISP_HAVE_X11
276 Ix.
init(480, 640, 255);
278 displayX->
init(Ix, 100, 100,
"Display X11");
282 if (opt_click_allowed)
287 #if defined(VISP_HAVE_OPENCV)
289 Icv.
init(480, 640, 255);
291 displayCv->
init(Icv, 100, 100,
"Display OpenCV");
295 if (opt_click_allowed)
300 #if defined VISP_HAVE_GTK
302 Igtk.
init(480, 640, 255);
304 displayGtk->
init(Igtk, 100, 100,
"Display GTK");
308 if (opt_click_allowed)
313 #if defined VISP_HAVE_GDI
315 Igdi.
init(480, 640, 255);
317 displayGdi->
init(Igdi, 100, 100,
"Display GDI");
321 if (opt_click_allowed)
326 #if defined VISP_HAVE_D3D9
328 Id3d.
init(480, 640, 255);
330 displayD3d->
init(Id3d, 100, 100,
"Display Direct 3D");
334 if (opt_click_allowed)
339 #if defined VISP_HAVE_X11
343 #if defined VISP_HAVE_GTK
347 #if defined(VISP_HAVE_OPENCV)
351 #if defined VISP_HAVE_GDI
355 #if defined VISP_HAVE_D3D9
360 int main(
int argc,
const char **argv)
363 bool opt_list =
false;
364 bool opt_click_allowed =
true;
365 bool opt_display =
true;
368 if (getOptions(argc, argv, opt_list, opt_click_allowed, opt_display) ==
false) {
374 unsigned nbDevices = 0;
375 std::cout <<
"List of video-devices available: \n";
376 #if defined VISP_HAVE_GTK
377 std::cout <<
" GTK\n";
380 #if defined VISP_HAVE_X11
381 std::cout <<
" X11\n";
384 #if defined VISP_HAVE_GDI
385 std::cout <<
" GDI\n";
388 #if defined VISP_HAVE_D3D9
389 std::cout <<
" D3D\n";
392 #if defined VISP_HAVE_OPENCV
393 std::cout <<
" OpenCV\n";
397 std::cout <<
" No display is available\n";
403 runTest<vpRGBa>(opt_display, opt_click_allowed);
406 runTest<unsigned char>(opt_display, opt_click_allowed);
409 std::cout <<
"Catch an exception: " << e.
getMessage() << std::endl;
416 std::cout <<
"You do not have display functionalities..." << std::endl;
Generic class defining intrinsic camera parameters.
static const vpColor black
static const vpColor cyan
static const vpColor none
static const vpColor orange
static const vpColor blue
static const vpColor yellow
static const vpColor green
Display for windows using Direct3D 3rd party. Thus to enable this class Direct3D should be installed....
Display for windows using GDI (available on any windows 32 platform).
The vpDisplayGTK allows to display image using the GTK 3rd party library. Thus to enable this class G...
void init(vpImage< unsigned char > &I, int win_x=-1, int win_y=-1, const std::string &win_title="")
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="")
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="")
Use the X11 console to display images on unix-like OS. Thus to enable this class X11 should be instal...
void init(vpImage< unsigned char > &I, int win_x=-1, int win_y=-1, const std::string &win_title="")
static bool getClick(const vpImage< unsigned char > &I, bool blocking=true)
static void display(const vpImage< unsigned char > &I)
static void displayLine(const vpImage< unsigned char > &I, const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color, unsigned int thickness=1, bool segment=true)
static void displayCross(const vpImage< unsigned char > &I, const vpImagePoint &ip, unsigned int size, const vpColor &color, unsigned int thickness=1)
static void flush(const vpImage< unsigned char > &I)
static void displayArrow(const vpImage< unsigned char > &I, const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color=vpColor::white, unsigned int w=4, unsigned int h=2, unsigned int thickness=1)
static void displayPoint(const vpImage< unsigned char > &I, const vpImagePoint &ip, const vpColor &color, unsigned int thickness=1)
static void displayDotLine(const vpImage< unsigned char > &I, const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color, unsigned int thickness=1)
static void displayFrame(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, double size, const vpColor &color=vpColor::none, unsigned int thickness=1, const vpImagePoint &offset=vpImagePoint(0, 0))
static void displayRectangle(const vpImage< unsigned char > &I, const vpImagePoint &topLeft, unsigned int width, unsigned int height, const vpColor &color, bool fill=false, unsigned int thickness=1)
static void displayText(const vpImage< unsigned char > &I, const vpImagePoint &ip, const std::string &s, const vpColor &color)
static void displayCircle(const vpImage< unsigned char > &I, const vpImagePoint ¢er, unsigned int radius, const vpColor &color, bool fill=false, unsigned int thickness=1)
static void displayPolygon(const vpImage< unsigned char > &I, const std::vector< vpImagePoint > &vip, const vpColor &color, unsigned int thickness=1, bool closed=true)
error that can be emited by ViSP classes.
const char * getMessage() const
Implementation of an homogeneous matrix and operations on such kind of matrices.
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Definition of the vpImage class member functions.
void init(unsigned int height, unsigned int width)
Set the size of the image.
static bool parse(int *argcPtr, const char **argv, vpArgvInfo *argTable, int flags)
Defines a rectangle in the plane.
Implementation of a rotation matrix and operations on such kind of matrices.
Implementation of a rotation vector as Euler angle minimal representation.
Class that consider the case of a translation vector.