Visual Servoing Platform  version 3.6.1 under development (2024-11-15)
tutorial-draw-frame.cpp
1 #include <visp3/core/vpConfig.h>
3 #include <visp3/gui/vpDisplayGDI.h>
4 #include <visp3/gui/vpDisplayX.h>
5 #include <visp3/core/vpHomogeneousMatrix.h>
6 
7 int main()
8 {
9 #ifdef ENABLE_VISP_NAMESPACE
10  using namespace VISP_NAMESPACE_NAME;
11 #endif
12 
13  vpImage<unsigned char> I(2160, 3840, 128);
14 
15  try {
16 
17 #if defined(VISP_HAVE_X11)
18  vpDisplayX d(I, vpDisplay::SCALE_AUTO);
19 #elif defined(VISP_HAVE_GDI)
21 #endif
22 
23  vpDisplay::setTitle(I, "My image");
25 
26  double dTheta = 45;
27  double dOffset = 0.25;
28  std::string axisName[3] = { "x", "y", "z" };
29  double px = 600; double py = 600;
30  double u0 = 320; double v0 = 240;
31 
32  // Create a camera parameter container
34 
35  // Camera initialization with a perspective projection without distortion model
36  cam.initPersProjWithoutDistortion(px, py, u0, v0);
37 
38  for (unsigned int idAxis = 0; idAxis < 3; idAxis++) {
39  unsigned int tOffset = 0;
40  for (double theta = -180; theta < 180; theta += dTheta) {
41  vpTranslationVector t(0.05, 0.25 * (idAxis + 1), 0.37);
42  vpRxyzVector r(0, 0, 0);
43  t[0] = t[0] + tOffset * dOffset;
44  tOffset++;
45  r[idAxis] = vpMath::rad(theta);
47  cMo.buildFrom(t, vpRotationMatrix(r));
48  std::stringstream ss_name;
49  ss_name << "cMo_";
50  ss_name << static_cast<int>(theta);
51  ss_name << "_";
52  ss_name << axisName[idAxis];
53 
55  vpDisplay::displayFrame(I, cMo, cam, 0.1, vpColor::none, 1, vpImagePoint(), ss_name.str(), vpColor::yellow, vpImagePoint(40, 40));
57  }
58  }
59 
61  std::cout << "A click to quit..." << std::endl;
63  }
64  catch (const vpException &e) {
65  std::cout << "Catch an exception: " << e.getMessage() << std::endl;
66  }
67 }
Generic class defining intrinsic camera parameters.
void initPersProjWithoutDistortion(double px, double py, double u0, double v0)
static const vpColor none
Definition: vpColor.h:229
static const vpColor yellow
Definition: vpColor.h:225
Display for windows using GDI (available on any windows 32 platform).
Definition: vpDisplayGDI.h:130
static bool getClick(const vpImage< unsigned char > &I, bool blocking=true)
static void display(const vpImage< unsigned char > &I)
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 setTitle(const vpImage< unsigned char > &I, const std::string &windowtitle)
static void flush(const vpImage< unsigned char > &I)
@ SCALE_AUTO
Definition: vpDisplay.h:184
error that can be emitted by ViSP classes.
Definition: vpException.h:60
const char * getMessage() const
Definition: vpException.cpp:65
Implementation of an homogeneous matrix and operations on such kind of matrices.
vpHomogeneousMatrix & buildFrom(const vpTranslationVector &t, const vpRotationMatrix &R)
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Definition: vpImagePoint.h:82
static double rad(double deg)
Definition: vpMath.h:129
Implementation of a rotation matrix and operations on such kind of matrices.
Implementation of a rotation vector as Euler angle minimal representation.
Definition: vpRxyzVector.h:183
Class that consider the case of a translation vector.