40 #include <visp3/core/vpConfig.h>
41 #include <visp3/core/vpDebug.h>
47 #if defined(VISP_HAVE_GTK) || defined(VISP_HAVE_X11) || defined(VISP_HAVE_GDI) || defined(VISP_HAVE_D3D9) || 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>
62 #define GETOPTARGS "hldc"
64 #ifdef ENABLE_VISP_NAMESPACE
74 static void usage(
const char *name,
const char *badparam)
77 Test video devices or display.\n\
80 %s [-l] [-c] [-d] [-h]\n\
87 Disable the mouse click. Useful to automate the \n\
88 execution of this program without human intervention.\n\
91 Turn off the display.\n\
94 Print the list of video-devices available and exit.\n\
97 Print the help.\n\n");
100 fprintf(stdout,
"\nERROR: Bad parameter [%s]\n", badparam);
113 static bool getOptions(
int argc,
const char **argv,
bool &list,
bool &click_allowed,
bool &display)
124 usage(argv[0],
nullptr);
128 click_allowed =
false;
135 usage(argv[0], optarg_);
141 if ((c == 1) || (c == -1)) {
143 usage(argv[0],
nullptr);
144 std::cerr <<
"ERROR: " << std::endl;
145 std::cerr <<
" Bad argument " << optarg_ << std::endl << std::endl;
242 vpRect rectangle(iP1, iP2);
249 std::vector<vpImagePoint> vip;
276 polygon.buildFrom(vip);
280 template <
typename Type>
281 static void runTest(
bool opt_display,
bool opt_click_allowed)
289 #if defined(VISP_HAVE_X11)
290 vpDisplayX *displayX =
new vpDisplayX;
291 Ix.
init(480, 640, Type(255));
293 displayX->init(Ix, 100, 100,
"Display X11");
297 if (opt_click_allowed)
302 #if defined(HAVE_OPENCV_HIGHGUI)
304 Icv.
init(480, 640, Type(255));
306 displayCv->
init(Icv, 100, 100,
"Display OpenCV");
310 if (opt_click_allowed)
315 #if defined(VISP_HAVE_GTK)
317 Igtk.
init(480, 640, Type(255));
319 displayGtk->
init(Igtk, 100, 100,
"Display GTK");
323 if (opt_click_allowed)
328 #if defined(VISP_HAVE_GDI)
331 Igdi.
init(480, 640, Type(255));
333 displayGdi->
init(Igdi, 100, 100,
"Display GDI");
337 if (opt_click_allowed)
342 #if defined(VISP_HAVE_D3D9)
344 Id3d.
init(480, 640, Type(255));
346 displayD3d->
init(Id3d, 100, 100,
"Display Direct 3D");
350 if (opt_click_allowed)
355 #if defined(VISP_HAVE_X11)
359 #if defined(VISP_HAVE_GTK)
363 #if defined(HAVE_OPENCV_HIGHGUI)
367 #if defined(VISP_HAVE_GDI)
372 #if defined(VISP_HAVE_D3D9)
377 int main(
int argc,
const char **argv)
380 bool opt_list =
false;
381 bool opt_click_allowed =
true;
382 bool opt_display =
true;
385 if (getOptions(argc, argv, opt_list, opt_click_allowed, opt_display) ==
false) {
391 unsigned nbDevices = 0;
392 std::cout <<
"List of video-devices available: \n";
393 #if defined(VISP_HAVE_GTK)
394 std::cout <<
" GTK\n";
397 #if defined(VISP_HAVE_X11)
398 std::cout <<
" X11\n";
401 #if defined(VISP_HAVE_GDI)
403 std::cout <<
" GDI\n";
406 #if defined(VISP_HAVE_D3D9)
407 std::cout <<
" D3D\n";
410 #if defined VISP_HAVE_OPENCV
411 std::cout <<
" OpenCV\n";
415 std::cout <<
" No display is available\n";
421 runTest<vpRGBa>(opt_display, opt_click_allowed);
424 runTest<unsigned char>(opt_display, opt_click_allowed);
429 std::cout <<
"Catch an exception: " << e.
getMessage() << std::endl;
436 std::cout <<
"You do not have display functionalities..." << std::endl;
Generic class defining intrinsic camera parameters.
static const vpColor cyan
static const vpColor none
static const vpColor orange
static const vpColor blue
static const vpColor yellow
static const vpColor black
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="") VP_OVERRIDE
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="") VP_OVERRIDE
void init(vpImage< unsigned char > &I, int winx=-1, int winy=-1, const std::string &title="") VP_OVERRIDE
static bool getClick(const vpImage< unsigned char > &I, bool blocking=true)
static void displayCircle(const vpImage< unsigned char > &I, const vpImageCircle &circle, const vpColor &color, bool fill=false, unsigned int thickness=1)
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 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), const std::string &frameName="", const vpColor &textColor=vpColor::black, const vpImagePoint &textOffset=vpImagePoint(15, 15))
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 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 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 emitted 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 generic 2D polygon.
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.