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\ 88 Disable the mouse click. Useful to automaze the \n\ 89 execution of this program without humain intervention.\n\ 92 Turn off the display.\n\ 95 Print the list of video-devices available and exit.\n\ 98 Print the help.\n\n");
101 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
114 static bool getOptions(
int argc,
const char **argv,
bool &list,
bool &click_allowed,
bool &display)
125 usage(argv[0], NULL);
129 click_allowed =
false;
136 usage(argv[0], optarg_);
142 if ((c == 1) || (c == -1)) {
144 usage(argv[0], NULL);
145 std::cerr <<
"ERROR: " << std::endl;
146 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
243 vpRect rectangle(iP1, iP2);
250 std::vector<vpImagePoint> polygon;
265 template <
typename Type>
static void runTest(
bool opt_display,
bool opt_click_allowed)
273 #if defined VISP_HAVE_X11 275 Ix.
init(480, 640, 255);
277 displayX->
init(Ix, 100, 100,
"Display X11");
281 if (opt_click_allowed)
286 #if defined(VISP_HAVE_OPENCV) 288 Icv.
init(480, 640, 255);
290 displayCv->
init(Icv, 100, 100,
"Display OpenCV");
294 if (opt_click_allowed)
299 #if defined VISP_HAVE_GTK 301 Igtk.
init(480, 640, 255);
303 displayGtk->
init(Igtk, 100, 100,
"Display GTK");
307 if (opt_click_allowed)
312 #if defined VISP_HAVE_GDI 314 Igdi.
init(480, 640, 255);
316 displayGdi->
init(Igdi, 100, 100,
"Display GDI");
320 if (opt_click_allowed)
325 #if defined VISP_HAVE_D3D9 327 Id3d.
init(480, 640, 255);
329 displayD3d->
init(Id3d, 100, 100,
"Display Direct 3D");
333 if (opt_click_allowed)
338 #if defined VISP_HAVE_X11 342 #if defined VISP_HAVE_GTK 346 #if defined(VISP_HAVE_OPENCV) 350 #if defined VISP_HAVE_GDI 354 #if defined VISP_HAVE_D3D9 359 int main(
int argc,
const char **argv)
362 bool opt_list =
false;
363 bool opt_click_allowed =
true;
364 bool opt_display =
true;
367 if (getOptions(argc, argv, opt_list, opt_click_allowed, opt_display) ==
false) {
373 unsigned nbDevices = 0;
374 std::cout <<
"List of video-devices available: \n";
375 #if defined VISP_HAVE_GTK 376 std::cout <<
" GTK\n";
379 #if defined VISP_HAVE_X11 380 std::cout <<
" X11\n";
383 #if defined VISP_HAVE_GDI 384 std::cout <<
" GDI\n";
387 #if defined VISP_HAVE_D3D9 388 std::cout <<
" D3D\n";
391 #if defined VISP_HAVE_OPENCV 392 std::cout <<
" OpenCV\n";
396 std::cout <<
" No display is available\n";
402 runTest<vpRGBa>(opt_display, opt_click_allowed);
405 runTest<unsigned char>(opt_display, opt_click_allowed);
408 std::cout <<
"Catch an exception: " << e.
getMessage() << std::endl;
415 std::cout <<
"You do not have display functionalities..." << std::endl;
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="")
static bool getClick(const vpImage< unsigned char > &I, bool blocking=true)
Implementation of an homogeneous matrix and operations on such kind of matrices.
static const vpColor black
Display for windows using GDI (available on any windows 32 platform).
static void displayText(const vpImage< unsigned char > &I, const vpImagePoint &ip, const std::string &s, const vpColor &color)
Use the X11 console to display images on unix-like OS. Thus to enable this class X11 should be instal...
static const vpColor none
error that can be emited by ViSP classes.
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="")
static void displayPoint(const vpImage< unsigned char > &I, const vpImagePoint &ip, const vpColor &color, unsigned int thickness=1)
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
Implementation of a rotation matrix and operations on such kind of matrices.
Display for windows using Direct3D 3rd party. Thus to enable this class Direct3D should be installed...
static void displayPolygon(const vpImage< unsigned char > &I, const std::vector< vpImagePoint > &vip, const vpColor &color, unsigned int thickness=1, bool closed=true)
static const vpColor cyan
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 display(const vpImage< unsigned char > &I)
The vpDisplayOpenCV allows to display image using the OpenCV library. Thus to enable this class OpenC...
Generic class defining intrinsic camera parameters.
void init(vpImage< unsigned char > &I, int win_x=-1, int win_y=-1, const std::string &win_title="")
The vpDisplayGTK allows to display image using the GTK 3rd party library. Thus to enable this class G...
void init(unsigned int height, unsigned int width)
Set the size of the image.
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 displayCircle(const vpImage< unsigned char > &I, const vpImagePoint ¢er, unsigned int radius, const vpColor &color, bool fill=false, unsigned int thickness=1)
static void displayCross(const vpImage< unsigned char > &I, const vpImagePoint &ip, unsigned int size, 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))
Implementation of a rotation vector as Euler angle minimal representation.
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="")
Defines a rectangle in the plane.
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
static const vpColor yellow
const char * getMessage() const
static void displayLine(const vpImage< unsigned char > &I, const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color, unsigned int thickness=1, bool segment=true)
Definition of the vpImage class member functions.
Class that consider the case of a translation vector.
static void displayDotLine(const vpImage< unsigned char > &I, const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color, unsigned int thickness=1)
static const vpColor blue