initial documentation
authorOzan Tonkal <ozantonkal@gmail.com>
Sun, 1 Sep 2013 17:34:17 +0000 (19:34 +0200)
committerOzan Tonkal <ozantonkal@gmail.com>
Thu, 5 Sep 2013 19:03:39 +0000 (21:03 +0200)
modules/viz/doc/viz.rst [new file with mode: 0644]
modules/viz/doc/viz3d.rst [new file with mode: 0644]
modules/viz/doc/widget.rst [new file with mode: 0644]

diff --git a/modules/viz/doc/viz.rst b/modules/viz/doc/viz.rst
new file mode 100644 (file)
index 0000000..f51a151
--- /dev/null
@@ -0,0 +1,11 @@
+***********************
+viz. 3D Visualizer
+***********************
+
+.. toctree::
+       :maxdepth: 2
+       
+       viz3d.rst
+       widget.rst
+       types.rst
+       widget_accessor.rst
diff --git a/modules/viz/doc/viz3d.rst b/modules/viz/doc/viz3d.rst
new file mode 100644 (file)
index 0000000..e7dcc35
--- /dev/null
@@ -0,0 +1,556 @@
+Viz3d
+=====
+
+.. highlight:: cpp
+
+Viz3d
+-----
+.. ocv:class:: Viz3d
+
+The Viz3d class represents a 3D visualizer window. This class is implicitly shared.    ::
+
+       class CV_EXPORTS Viz3d
+       {
+       public:
+               typedef cv::Ptr<Viz3d> Ptr;
+               typedef void (*KeyboardCallback)(const KeyboardEvent&, void*);
+               typedef void (*MouseCallback)(const MouseEvent&, void*);
+
+               Viz3d(const String& window_name = String());
+               Viz3d(const Viz3d&);
+               Viz3d& operator=(const Viz3d&);
+               ~Viz3d();
+
+               void showWidget(const String &id, const Widget &widget, const Affine3f &pose = Affine3f::Identity());
+               void removeWidget(const String &id);
+               Widget getWidget(const String &id) const;
+               void removeAllWidgets();
+
+               void setWidgetPose(const String &id, const Affine3f &pose);
+               void updateWidgetPose(const String &id, const Affine3f &pose);
+               Affine3f getWidgetPose(const String &id) const;
+               
+               void setCamera(const Camera &camera);
+               Camera getCamera() const;
+               Affine3f getViewerPose();
+               void setViewerPose(const Affine3f &pose);
+               
+               void resetCameraViewpoint (const String &id);
+               void resetCamera();
+               
+               void convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord);
+               void converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction);
+               
+               Size getWindowSize() const;
+               void setWindowSize(const Size &window_size);
+               String getWindowName() const;
+               void saveScreenshot (const String &file);
+               void setWindowPosition (int x, int y);
+               void setFullScreen (bool mode);
+               void setBackgroundColor(const Color& color = Color::black());
+
+               void spin();
+               void spinOnce(int time = 1, bool force_redraw = false);
+               bool wasStopped() const;
+
+               void registerKeyboardCallback(KeyboardCallback callback, void* cookie = 0);
+               void registerMouseCallback(MouseCallback callback, void* cookie = 0);
+               
+               void setRenderingProperty(const String &id, int property, double value);
+               double getRenderingProperty(const String &id, int property);
+               
+               void setDesiredUpdateRate(double rate);
+               double getDesiredUpdateRate();
+               
+               void setRepresentationToSurface();
+               void setRepresentationToWireframe();
+               void setRepresentationToPoints();
+       private:
+               /* hidden */
+       };
+
+Viz3d::Viz3d
+------------
+The constructors.
+
+.. ocv:function:: Viz3d::Viz3d(const String& window_name = String())
+
+       :param window_name: Name of the window.
+
+Viz3d::showWidget
+-----------------
+Shows a widget in the window.
+
+.. ocv:function:: void Viz3d::showWidget(const String &id, const Widget &widget, const Affine3f &pose = Affine3f::Identity())
+
+       :param id: A unique id for the widget.
+       :param widget: The widget to be rendered in the window.
+       :param pose: Pose of the widget.
+       
+Viz3d::removeWidget
+-------------------
+Removes a widget from the window.
+
+.. ocv:function:: void removeWidget(const String &id)
+
+       :param id: The id of the widget that will be removed.
+       
+Viz3d::getWidget
+----------------
+Retrieves a widget from the window. A widget is implicitly shared;
+that is, if the returned widget is modified, the changes will be 
+immediately visible in the window.
+
+.. ocv:function:: Widget getWidget(const String &id) const
+
+       :param id: The id of the widget that will be returned.
+       
+Viz3d::removeAllWidgets
+-----------------------
+Removes all widgets from the window.
+
+.. ocv:function:: void removeAllWidgets()
+
+Viz3d::setWidgetPose
+--------------------
+Sets pose of a widget in the window.
+
+.. ocv:function:: void setWidgetPose(const String &id, const Affine3f &pose)
+
+       :param id: The id of the widget whose pose will be set.
+       :param pose: The new pose of the widget.
+
+Viz3d::updateWidgetPose
+-----------------------
+Updates pose of a widget in the window by pre-multiplying its current pose.
+
+.. ocv:function:: void updateWidgetPose(const String &id, const Affine3f &pose)
+
+       :param id: The id of the widget whose pose will be updated.
+       :param pose: The pose that the current pose of the widget will be pre-multiplied by.
+
+Viz3d::getWidgetPose
+--------------------
+Returns the current pose of a widget in the window.
+
+.. ocv:function:: Affine3f getWidgetPose(const String &id) const
+
+       :param id: The id of the widget whose pose will be returned.
+
+Viz3d::setCamera
+----------------
+Sets the intrinsic parameters of the viewer using Camera.
+
+.. ocv:function:: void setCamera(const Camera &camera)
+
+       :param camera: Camera object wrapping intrinsinc parameters.
+
+Viz3d::getCamera
+----------------
+Returns a camera object that contains intrinsic parameters of the current viewer.
+
+.. ocv:function:: Camera getCamera() const
+
+Viz3d::getViewerPose
+--------------------
+Returns the current pose of the viewer.
+
+..ocv:function:: Affine3f getViewerPose()
+
+Viz3d::setViewerPose
+--------------------
+Sets pose of the viewer.
+
+.. ocv:function:: void setViewerPose(const Affine3f &pose)
+
+       :param pose: The new pose of the viewer.
+
+Viz3d::resetCameraViewpoint
+---------------------------
+Resets camera viewpoint to a 3D widget in the scene.
+
+.. ocv:function:: void resetCameraViewpoint (const String &id)
+
+       :param pose: Id of a 3D widget.
+       
+Viz3d::resetCamera
+------------------
+Resets camera.
+
+.. ocv:function:: void resetCamera()
+
+Viz3d::convertToWindowCoordinates
+---------------------------------
+Transforms a point in world coordinate system to window coordinate system.
+
+.. ocv:function:: void convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord)
+
+       :param pt: Point in world coordinate system.
+       :param window_coord: Output point in window coordinate system.
+       
+Viz3d::converTo3DRay
+--------------------
+Transforms a point in window coordinate system to a 3D ray in world coordinate system.
+
+.. ocv:function:: void converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction)
+
+       :param window_coord: Point in window coordinate system.
+       :param origin: Output origin of the ray.
+       :param direction: Output direction of the ray.
+       
+Viz3d::getWindowSize
+--------------------
+Returns the current size of the window.
+
+.. ocv:function:: Size getWindowSize() const
+
+Viz3d::setWindowSize
+--------------------
+Sets the size of the window.
+
+.. ocv:function:: void setWindowSize(const Size &window_size)
+
+       :param window_size: New size of the window.
+       
+Viz3d::getWindowName
+--------------------
+Returns the name of the window which has been set in the constructor.
+
+.. ocv:function:: String getWindowName() const
+
+Viz3d::saveScreenshot
+---------------------
+Saves screenshot of the current scene.
+
+.. ocv:function:: void saveScreenshot(const String &file)
+
+       :param file: Name of the file.
+       
+Viz3d::setWindowPosition
+------------------------
+Sets the position of the window in the screen.
+
+.. ocv:function:: void setWindowPosition(int x, int y)
+
+       :param x: x coordinate of the window
+       :param y: y coordinate of the window
+       
+Viz3d::setFullScreen
+--------------------
+Sets or unsets full-screen rendering mode.
+
+.. ocv:function:: void setFullScreen(bool mode)
+
+       :param mode: If true, window will use full-screen mode.
+       
+Viz3d::setBackgroundColor
+-------------------------
+Sets background color.
+
+.. ocv:function:: void setBackgroundColor(const Color& color = Color::black())
+
+Viz3d::spin
+-----------
+The window renders and starts the event loop.
+
+.. ocv:function:: void spin()
+
+Viz3d::spinOnce
+---------------
+Starts the event loop for a given time.
+
+.. ocv:function:: void spinOnce(int time = 1, bool force_redraw = false)
+
+       :param time: Amount of time in milliseconds for the event loop to keep running.
+       :param force_draw: If true, window renders.
+
+Viz3d::wasStopped
+-----------------
+Returns whether the event loop has been stopped.
+
+.. ocv:function:: bool wasStopped()
+
+Viz3d::registerKeyboardCallback
+-------------------------------
+Sets keyboard handler.
+
+.. ocv:function:: void registerKeyboardCallback(KeyboardCallback callback, void* cookie = 0)
+
+       :param callback: Keyboard callback.
+       :param cookie: The optional parameter passed to the callback.
+       
+Viz3d::registerMouseCallback
+----------------------------
+Sets mouse handler.
+
+.. ocv:function:: void registerMouseCallback(MouseCallback callback, void* cookie = 0)
+
+       :param callback: Mouse callback.
+       :param cookie: The optional parameter passed to the callback.
+
+Viz3d::setRenderingProperty
+---------------------------
+Sets rendering property of a widget.
+
+.. ocv:function:: void setRenderingProperty(const String &id, int property, double value)
+
+       :param id: Id of the widget.
+       :param property: Property that will be modified.
+       :param value: The new value of the property.
+       
+Viz3d::getRenderingProperty
+---------------------------
+Returns rendering property of a widget.
+
+.. ocv:function:: double getRenderingProperty(const String &id, int property)
+
+       :param id: Id of the widget.
+       :param property: Property.
+
+Viz3d::setDesiredUpdateRate
+---------------------------
+Sets desired update rate of the window.
+
+.. ocv:function:: void setDesiredUpdateRate(double rate)
+
+       :param rate: Desired update rate. The default is 30.
+       
+Viz3d::getDesiredUpdateRate
+---------------------------
+Returns desired update rate of the window.
+
+.. ocv:function:: double getDesiredUpdateRate()
+
+Viz3d::setRepresentationToSurface
+---------------------------------
+Sets geometry representation of the widgets to surface.
+
+.. ocv:function:: void setRepresentationToSurface()
+
+Viz3d::setRepresentationToWireframe
+-----------------------------------
+Sets geometry representation of the widgets to wireframe.
+
+.. ocv:function:: void setRepresentationToWireframe()
+
+Viz3d::setRepresentationToPoints
+--------------------------------
+Sets geometry representation of the widgets to points.
+
+.. ocv:function:: void setRepresentationToPoints()
+
+Color
+-----
+.. ocv:class:: Color
+
+This class a represents BGR color. ::
+
+       class CV_EXPORTS Color : public Scalar
+       {
+       public:
+               Color();
+               Color(double gray);
+               Color(double blue, double green, double red);
+
+               Color(const Scalar& color);
+
+               static Color black();
+               static Color blue();
+               static Color green();
+               static Color cyan();
+
+               static Color red();
+               static Color magenta();
+               static Color yellow();
+               static Color white();
+
+               static Color gray();
+       };
+
+Mesh3d
+------
+.. ocv:class:: Mesh3d
+
+This class wraps mesh attributes, and it can load a mesh from a ``ply`` file. ::
+
+       class CV_EXPORTS Mesh3d
+       {
+       public:
+
+               Mat cloud, colors;
+               Mat polygons;
+
+               //! Loads mesh from a given ply file
+               static Mesh3d loadMesh(const String& file);
+               
+       private:
+               /* hidden */
+       };
+       
+Mesh3d::loadMesh
+----------------
+Loads a mesh from a ``ply`` file.
+
+.. ocv:function:: static Mesh3d loadMesh(const String& file)
+
+       :param file: File name.
+KeyboardEvent
+-------------
+.. ocv:class:: KeyboardEvent
+
+This class represents a keyboard event. ::
+
+       class CV_EXPORTS KeyboardEvent
+       {
+       public:
+               static const unsigned int Alt   = 1;
+               static const unsigned int Ctrl  = 2;
+               static const unsigned int Shift = 4;
+
+               //! Create a keyboard event
+               //! - Note that action is true if key is pressed, false if released
+               KeyboardEvent (bool action, const std::string& key_sym, unsigned char key, bool alt, bool ctrl, bool shift);
+
+               bool isAltPressed () const;
+               bool isCtrlPressed () const;
+               bool isShiftPressed () const;
+
+               unsigned char getKeyCode () const;
+
+               const String& getKeySym () const;
+               bool keyDown () const;
+               bool keyUp () const;
+
+       protected:
+               /* hidden */
+       };
+
+KeyboardEvent::KeyboardEvent
+----------------------------
+Constructs a KeyboardEvent.
+
+.. ocv:function:: KeyboardEvent (bool action, const std::string& key_sym, unsigned char key, bool alt, bool ctrl, bool shift)
+
+       :param action: If true, key is pressed. If false, key is released.
+       :param key_sym: Name of the key.
+       :param key: Code of the key.
+       :param alt: If true, ``alt`` is pressed.
+       :param ctrl: If true, ``ctrl`` is pressed.
+       :param shift: If true, ``shift`` is pressed.
+       
+MouseEvent
+----------
+.. ocv:class:: MouseEvent
+
+This class represents a mouse event. ::
+
+       class CV_EXPORTS MouseEvent
+       {
+       public:
+               enum Type { MouseMove = 1, MouseButtonPress, MouseButtonRelease, MouseScrollDown, MouseScrollUp, MouseDblClick } ;
+               enum MouseButton { NoButton = 0, LeftButton, MiddleButton, RightButton, VScroll } ;
+
+               MouseEvent (const Type& type, const MouseButton& button, const Point& p, bool alt, bool ctrl, bool shift);
+
+               Type type;
+               MouseButton button;
+               Point pointer;
+               unsigned int key_state;
+       };
+       
+MouseEvent::MouseEvent
+----------------------
+Constructs a MouseEvent.
+
+.. ocv:function:: MouseEvent (const Type& type, const MouseButton& button, const Point& p, bool alt, bool ctrl, bool shift)
+
+       :param type: Type of the event. This can be **MouseMove**, **MouseButtonPress**, **MouseButtonRelease**, **MouseScrollDown**, **MouseScrollUp**, **MouseDblClick**.
+       :param button: Mouse button. This can be **NoButton**, **LeftButton**, **MiddleButton**, **RightButton**, **VScroll**.
+       :param p: Position of the event.
+       :param alt: If true, ``alt`` is pressed.
+       :param ctrl: If true, ``ctrl`` is pressed.
+       :param shift: If true, ``shift`` is pressed.
+       
+Camera
+------
+.. ocv:class:: Camera
+
+This class wraps intrinsic parameters of a camera. It provides several constructors
+that can extract the intrinsic parameters from ``field of view``, ``intrinsic matrix`` and
+``projection matrix``. ::
+
+       class CV_EXPORTS Camera
+       {
+       public:
+               Camera(float f_x, float f_y, float c_x, float c_y, const Size &window_size);
+               Camera(const Vec2f &fov, const Size &window_size);
+               Camera(const cv::Matx33f &K, const Size &window_size);
+               Camera(const cv::Matx44f &proj, const Size &window_size);
+               
+               inline const Vec2d & getClip() const { return clip_; }
+               inline void setClip(const Vec2d &clip) { clip_ = clip; }
+               
+               inline const Size & getWindowSize() const { return window_size_; }
+               void setWindowSize(const Size &window_size);
+               
+               inline const Vec2f & getFov() const { return fov_; }
+               inline void setFov(const Vec2f & fov) { fov_ = fov; }
+               
+               inline const Vec2f & getPrincipalPoint() const { return principal_point_; }
+               inline const Vec2f & getFocalLength() const { return focal_; }
+               
+               void computeProjectionMatrix(Matx44f &proj) const;
+               
+               static Camera KinectCamera(const Size &window_size);
+               
+       private:
+               /* hidden */
+       };
+
+Camera::Camera
+--------------
+Constructs a Camera.
+
+.. ocv:function:: Camera(float f_x, float f_y, float c_x, float c_y, const Size &window_size)
+
+       :param f_x: Horizontal focal length.
+       :param f_y: Vertical focal length.
+       :param c_x: x coordinate of the principal point.
+       :param c_y: y coordinate of the principal point.
+       :param window_size: Size of the window. This together with focal length and principal point determines the field of view.
+
+.. ocv:function:: Camera(const Vec2f &fov, const Size &window_size)
+
+       :param fov: Field of view (horizontal, vertical)
+       :param window_size: Size of the window.
+
+       Principal point is at the center of the window by default.
+       
+.. ocv:function:: Camera(const cv::Matx33f &K, const Size &window_size)
+
+       :param K: Intrinsic matrix of the camera.
+       :param window_size: Size of the window. This together with intrinsic matrix determines the field of view.
+
+.. ocv:function:: Camera(const cv::Matx44f &proj, const Size &window_size)
+
+       :param proj: Projection matrix of the camera.
+       :param window_size: Size of the window. This together with projection matrix determines the field of view.
+
+Camera::computeProjectionMatrix
+-------------------------------
+Computes projection matrix using intrinsic parameters of the camera.
+
+.. ocv:function:: void computeProjectionMatrix(Matx44f &proj) const
+
+       :param proj: Output projection matrix.
+               
+Camera::KinectCamera
+--------------------
+Creates a Kinect Camera.
+
+.. ocv:function:: static Camera KinectCamera(const Size &window_size)
+
+       :param window_size: Size of the window. This together with intrinsic matrix of a Kinect Camera determines the field of view.
+
diff --git a/modules/viz/doc/widget.rst b/modules/viz/doc/widget.rst
new file mode 100644 (file)
index 0000000..d4199fd
--- /dev/null
@@ -0,0 +1,811 @@
+Widget
+======
+       
+.. highlight:: cpp
+
+In this section, the built-in widgets are presented. 
+
+Widget
+------
+.. ocv:class:: Widget
+
+Base class of all widgets. Widget is implicitly shared.::
+
+       class CV_EXPORTS Widget
+       {
+       public:
+               Widget();
+               Widget(const Widget& other);
+               Widget& operator=(const Widget& other);
+               ~Widget();
+               
+               //! Create a widget directly from ply file
+               static Widget fromPlyFile(const String &file_name);
+               
+               //! Rendering properties of this particular widget
+               void setRenderingProperty(int property, double value);
+               double getRenderingProperty(int property) const;
+
+               //! Casting between widgets
+               template<typename _W> _W cast();
+       private:
+               /* hidden */
+       };
+
+Widget::fromPlyFile
+-------------------
+Creates a widget from ply file.
+
+.. ocv:function:: static Widget fromPlyFile(const String &file_name)
+
+       :param file_name: Ply file name.
+       
+Widget::setRenderingProperty
+----------------------------
+Sets rendering property of the widget.
+
+.. ocv:function:: void setRenderingProperty(int property, double value)
+
+       :param property: Property that will be modified.
+       :param value: The new value of the property.
+       
+Widget::getRenderingProperty
+----------------------------
+Returns rendering property of the widget.
+
+.. ocv:function:: double getRenderingProperty(int property) const
+
+       :param property: Property.
+       
+Widget::cast
+------------
+Casts a widget to another.
+
+.. ocv:function:: template<typename _W> _W cast()
+
+Widget3D
+--------
+.. ocv:class:: Widget3D
+
+Base class of all 3D widgets. ::
+
+       class CV_EXPORTS Widget3D : public Widget
+       {
+       public:
+               Widget3D() {}
+
+               void setPose(const Affine3f &pose);
+               void updatePose(const Affine3f &pose);
+               Affine3f getPose() const;
+
+               void setColor(const Color &color);
+       private:
+               /* hidden */
+       };
+
+Widget3D::setPose
+-----------------
+Sets pose of the widget.
+
+.. ocv:function:: void setPose(const Affine3f &pose)
+
+       :param pose: The new pose of the widget.
+       
+Widget3D::updateWidgetPose
+--------------------------
+Updates pose of the widget by pre-multiplying its current pose.
+
+.. ocv:function:: void updateWidgetPose(const Affine3f &pose)
+
+       :param pose: The pose that the current pose of the widget will be pre-multiplied by.
+
+Widget3D::getPose
+-----------------
+Returns the current pose of the widget.
+
+.. ocv:function:: Affine3f getWidgetPose() const
+
+Widget3D::setColor
+------------------
+Sets the color of the widget.
+
+.. ocv:function:: void setColor(const Color &color)
+
+       :param color: Color
+       
+Widget2D
+--------
+.. ocv:class:: Widget2D
+
+Base class of all 2D widgets. ::
+
+       class CV_EXPORTS Widget2D : public Widget
+       {
+       public:
+               Widget2D() {}
+
+               void setColor(const Color &color);
+       };
+       
+Widget2D::setColor
+------------------
+Sets the color of the widget.
+
+.. ocv:function:: void setColor(const Color &color)
+
+       :param color: Color
+
+LineWidget
+----------
+.. ocv:class:: LineWidget
+
+This 3D Widget defines a finite line. ::
+
+       class CV_EXPORTS LineWidget : public Widget3D
+       {
+       public:
+               LineWidget(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
+       };
+       
+LineWidget::LineWidget
+----------------------
+Constructs a LineWidget.
+
+.. ocv:function:: LineWidget(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white())
+
+       :param pt1: Start point of the line.
+       :param pt2: End point of the line.
+       :param color: Color of the line.
+       
+PlaneWidget
+-----------
+.. ocv:class:: PlaneWidget
+
+This 3D Widget defines a finite plane. ::
+
+       class CV_EXPORTS PlaneWidget : public Widget3D
+       {
+       public:
+               PlaneWidget(const Vec4f& coefs, double size = 1.0, const Color &color = Color::white());
+               PlaneWidget(const Vec4f& coefs, const Point3f& pt, double size = 1.0, const Color &color = Color::white());
+       private:
+               /* hidden */
+       };
+       
+PlaneWidget::PlaneWidget
+------------------------
+Constructs a PlaneWidget.
+
+.. ocv:function:: PlaneWidget(const Vec4f& coefs, double size = 1.0, const Color &color = Color::white())
+       
+       :param coefs: Plane coefficients as in (A,B,C,D) where Ax + By + Cz + D = 0.
+       :param size: Size of the plane.
+       :param color: Color of the plane.
+
+.. ocv:function:: PlaneWidget(const Vec4f& coefs, const Point3f& pt, double size = 1.0, const Color &color = Color::white())
+
+       :param coefs: Plane coefficients as in (A,B,C,D) where Ax + By + Cz + D = 0.
+       :param pt: Position of the plane.
+       :param color: Color of the plane.
+       
+SphereWidget
+------------
+.. ocv:class:: SphereWidget
+
+This 3D Widget defines a sphere. ::
+
+       class CV_EXPORTS SphereWidget : public Widget3D
+       {
+       public:
+               SphereWidget(const cv::Point3f &center, float radius, int sphere_resolution = 10, const Color &color = Color::white())
+       };
+
+SphereWidget::SphereWidget
+--------------------------
+Constructs a SphereWidget.
+
+.. ocv:function:: SphereWidget(const cv::Point3f &center, float radius, int sphere_resolution = 10, const Color &color = Color::white())
+
+       :param center: Center of the sphere.
+       :param radius: Radius of the sphere.
+       :param sphere_resolution: Resolution of the sphere.
+       :param color: Color of the sphere.
+
+ArrowWidget
+-----------
+.. ocv:class:: ArrowWidget
+
+This 3D Widget defines an arrow. ::
+
+       class CV_EXPORTS ArrowWidget : public Widget3D
+       {
+       public:
+               ArrowWidget(const Point3f& pt1, const Point3f& pt2, double thickness = 0.03, const Color &color = Color::white());
+       };
+       
+ArrowWidget::ArrowWidget
+------------------------
+Constructs an ArrowWidget.
+
+.. ocv:function:: ArrowWidget(const Point3f& pt1, const Point3f& pt2, double thickness = 0.03, const Color &color = Color::white())
+
+       :param pt1: Start point of the arrow.
+       :param pt2: End point of the arrow.
+       :param thickness: Thickness of the arrow. Thickness of arrow head is also adjusted accordingly.
+       :param color: Color of the arrow.
+       
+Arrow head is located at the end point of the arrow.
+       
+CircleWidget
+------------
+.. ocv:class:: CircleWidget
+
+This 3D Widget defines a circle. ::
+
+       class CV_EXPORTS CircleWidget : public Widget3D
+       {
+       public:
+               CircleWidget(const Point3f& pt, double radius, double thickness = 0.01, const Color &color = Color::white());
+       };
+       
+CircleWidget::CircleWidget
+--------------------------
+Constructs a CircleWidget.
+
+.. ocv:function:: CircleWidget(const Point3f& pt, double radius, double thickness = 0.01, const Color &color = Color::white())
+
+       :param pt: Center of the circle.
+       :param radius: Radius of the circle.
+       :param thickness: Thickness of the circle.
+       :param color: Color of the circle.
+       
+CylinderWidget
+--------------
+.. ocv:class:: CylinderWidget
+
+This 3D Widget defines a cylinder. ::
+
+       class CV_EXPORTS CylinderWidget : public Widget3D
+       {
+       public:
+               CylinderWidget(const Point3f& pt_on_axis, const Point3f& axis_direction, double radius, int numsides = 30, const Color &color = Color::white());
+       };
+
+CylinderWidget::CylinderWidget
+------------------------------
+Constructs a CylinderWidget.
+
+.. ocv:function:: CylinderWidget(const Point3f& pt_on_axis, const Point3f& axis_direction, double radius, int numsides = 30, const Color &color = Color::white())
+
+       :param pt_on_axis: A point on the axis of the cylinder.
+       :param axis_direction: Direction of the axis of the cylinder.
+       :param radius: Radius of the cylinder.
+       :param numsides: Resolution of the cylinder.
+       :param color: Color of the cylinder.
+       
+CubeWidget
+----------
+.. ocv:class:: CubeWidget
+
+This 3D Widget defines a cube. ::
+
+       class CV_EXPORTS CubeWidget : public Widget3D
+       {
+       public:
+               CubeWidget(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame = true, const Color &color = Color::white());
+       };
+       
+CubeWidget::CubeWidget
+----------------------
+Constructs a CudeWidget.
+
+.. ocv:function:: CubeWidget(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame = true, const Color &color = Color::white())
+
+       :param pt_min: Specifies minimum point of the bounding box.
+       :param pt_max: Specifies maximum point of the bounding box.
+       :param wire_frame: If true, cube is represented as wireframe.
+       :param color: Color of the cube.
+       
+CoordinateSystemWidget
+----------------------
+.. ocv:class:: CoordinateSystemWidget
+
+This 3D Widget represents a coordinate system. ::
+
+       class CV_EXPORTS CoordinateSystemWidget : public Widget3D
+       {
+       public:
+               CoordinateSystemWidget(double scale = 1.0);
+       };
+       
+CoordinateSystemWidget::CoordinateSystemWidget
+----------------------------------------------
+Constructs a CoordinateSystemWidget.
+
+.. ocv:function:: CoordinateSystemWidget(double scale = 1.0)
+
+       :param scale: Determines the size of the axes.
+       
+PolyLineWidget
+--------------
+.. ocv:class:: PolyLineWidget
+
+This 3D Widget defines a poly line. ::
+
+       class CV_EXPORTS PolyLineWidget : public Widget3D
+       {
+       public:
+               PolyLineWidget(InputArray points, const Color &color = Color::white());
+
+       private:
+               /* hidden */
+       };
+
+PolyLineWidget::PolyLineWidget
+------------------------------
+Constructs a PolyLineWidget.
+
+.. ocv:function:: PolyLineWidget(InputArray points, const Color &color = Color::white())
+       
+       :param points: Point set.
+       :param color: Color of the poly line.
+       
+GridWidget
+----------
+.. ocv:class:: GridWidget
+
+This 3D Widget defines a grid. ::
+
+       class CV_EXPORTS GridWidget : public Widget3D
+       {
+       public:
+               //! Creates grid at the origin
+               GridWidget(const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white());
+               //! Creates grid based on the plane equation
+               GridWidget(const Vec4f &coeffs, const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white());
+       private:
+               /* hidden */
+       };
+       
+GridWidget::GridWidget
+----------------------
+Constructs a GridWidget.
+
+.. ocv:function:: GridWidget(const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white())
+
+       :param dimensions: Number of columns and rows, respectively.
+       :param spacing: Size of each column and row, respectively.
+       :param color: Color of the grid.
+       
+.. ocv:function:  GridWidget(const Vec4f &coeffs, const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white())
+       
+       :param coeffs: Plane coefficients as in (A,B,C,D) where Ax + By + Cz + D = 0.
+       :param dimensions: Number of columns and rows, respectively.
+       :param spacing: Size of each column and row, respectively.
+       :param color: Color of the grid.
+       
+Text3DWidget
+------------
+.. ocv:class:: Text3DWidget
+
+This 3D Widget represents 3D text. The text always faces the camera. ::
+
+       class CV_EXPORTS Text3DWidget : public Widget3D
+       {
+       public:
+               Text3DWidget(const String &text, const Point3f &position, double text_scale = 1.0, const Color &color = Color::white());
+
+               void setText(const String &text);
+               String getText() const;
+       };
+       
+Text3DWidget::Text3DWidget
+--------------------------
+Constructs a Text3DWidget.
+
+.. ocv:function:: Text3DWidget(const String &text, const Point3f &position, double text_scale = 1.0, const Color &color = Color::white())
+
+       :param text: Text content of the widget.
+       :param position: Position of the text.
+       :param text_scale: Size of the text.
+       :param color: Color of the text.
+       
+Text3DWidget::setText
+---------------------
+Sets the text content of the widget.
+
+.. ocv:function:: void setText(const String &text)
+
+       :param text: Text content of the widget.
+
+Text3DWidget::getText
+---------------------
+Returns the current text content of the widget.
+
+.. ocv:function:: String getText() const
+
+TextWidget
+----------
+.. ocv:class:: TextWidget
+
+This 2D Widget represents text overlay. ::
+
+       class CV_EXPORTS TextWidget : public Widget2D
+       {
+       public:
+               TextWidget(const String &text, const Point2i &pos, int font_size = 10, const Color &color = Color::white());
+
+               void setText(const String &text);
+               String getText() const;
+       };
+       
+TextWidget::TextWidget
+----------------------
+Constructs a TextWidget.
+
+.. ocv:function:: TextWidget(const String &text, const Point2i &pos, int font_size = 10, const Color &color = Color::white())
+
+       :param text: Text content of the widget.
+       :param pos: Position of the text.
+       :param font_size: Font size.
+       :param color: Color of the text.
+       
+TextWidget::setText
+---------------------
+Sets the text content of the widget.
+
+.. ocv:function:: void setText(const String &text)
+
+       :param text: Text content of the widget.
+
+TextWidget::getText
+---------------------
+Returns the current text content of the widget.
+
+.. ocv:function:: String getText() const
+
+ImageOverlayWidget
+------------------
+.. ocv:class:: ImageOverlayWidget
+
+This 2D Widget represents an image overlay. ::
+
+       class CV_EXPORTS ImageOverlayWidget : public Widget2D
+       {
+       public:
+               ImageOverlayWidget(const Mat &image, const Rect &rect);
+               
+               void setImage(const Mat &image);
+       };
+       
+ImageOverlayWidget::ImageOverlayWidget
+--------------------------------------
+Constructs a ImageOverlayWidget.
+
+.. ocv:function:: ImageOverlayWidget(const Mat &image, const Rect &rect)
+
+       :param image: BGR or Gray-Scale image.
+       :param rect: Image is scaled and positioned based on rect.
+       
+ImageOverlayWidget::setImage
+----------------------------
+Sets the image content of the widget.
+
+.. ocv:function:: void setImage(const Mat &image)
+
+       :param image: BGR or Gray-Scale image.
+       
+Image3DWidget
+-------------
+.. ocv:class:: Image3DWidget
+
+This 3D Widget represents 3D image. ::
+
+       class CV_EXPORTS Image3DWidget : public Widget3D
+       {
+       public:
+               //! Creates 3D image at the origin
+               Image3DWidget(const Mat &image, const Size &size);
+               //! Creates 3D image at a given position, pointing in the direction of the normal, and having the up_vector orientation
+               Image3DWidget(const Vec3f &position, const Vec3f &normal, const Vec3f &up_vector, const Mat &image, const Size &size);
+               
+               void setImage(const Mat &image);
+       };
+
+Image3DWidget::Image3DWidget
+----------------------------
+Constructs a Image3DWidget.
+
+.. ocv:function:: Image3DWidget(const Mat &image, const Size &size)
+       
+       :param image: BGR or Gray-Scale image.
+       :param size: Size of the image.
+       
+.. ocv:function:: Image3DWidget(const Vec3f &position, const Vec3f &normal, const Vec3f &up_vector, const Mat &image, const Size &size)
+
+       :param position: Position of the image.
+       :param normal: Normal of the plane that represents the image.
+       :param up_vector: Determines orientation of the image.
+       :param image: BGR or Gray-Scale image.
+       :param size: Size of the image.
+       
+Image3DWidget::setImage
+-----------------------
+Sets the image content of the widget.
+
+.. ocv:function:: void setImage(const Mat &image)
+
+       :param image: BGR or Gray-Scale image.
+       
+CameraPositionWidget
+--------------------
+.. ocv:class:: CameraPositionWidget
+
+This 3D Widget represents camera position. ::
+
+       class CV_EXPORTS CameraPositionWidget : public Widget3D
+       {
+       public:
+               //! Creates camera coordinate frame (axes) at the origin
+               CameraPositionWidget(double scale = 1.0);
+               //! Creates frustum based on the intrinsic marix K at the origin
+               CameraPositionWidget(const Matx33f &K, double scale = 1.0, const Color &color = Color::white());
+               //! Creates frustum based on the field of view at the origin
+               CameraPositionWidget(const Vec2f &fov, double scale = 1.0, const Color &color = Color::white());
+               //! Creates frustum and display given image at the far plane
+               CameraPositionWidget(const Matx33f &K, const Mat &img, double scale = 1.0, const Color &color = Color::white());
+       };
+       
+CameraPositionWidget::CameraPositionWidget
+------------------------------------------
+Constructs a CameraPositionWidget.
+
+.. ocv:function:: CameraPositionWidget(double scale = 1.0)
+
+       Creates camera coordinate frame at the origin.
+       
+.. ocv:function:: CameraPositionWidget(const Matx33f &K, double scale = 1.0, const Color &color = Color::white())
+
+       :param K: Intrinsic matrix of the camera.
+       :param scale: Scale of the frustum.
+       :param color: Color of the frustum.
+       
+       Creates viewing frustum of the camera based on its intrinsic matrix K.
+       
+.. ocv:function:: CameraPositionWidget(const Vec2f &fov, double scale = 1.0, const Color &color = Color::white())
+
+       :param fov: Field of view of the camera (horizontal, vertical).
+       :param scale: Scale of the frustum.
+       :param color: Color of the frustum.
+       
+       Creates viewing frustum of the camera based on its field of view fov.
+
+.. ocv:function:: CameraPositionWidget(const Matx33f &K, const Mat &img, double scale = 1.0, const Color &color = Color::white())
+
+       :param K: Intrinsic matrix of the camera.
+       :param img: BGR or Gray-Scale image that is going to be displayed at the far plane of the frustum.
+       :param scale: Scale of the frustum and image.
+       :param color: Color of the frustum.
+       
+       Creates viewing frustum of the camera based on its intrinsic matrix K, and displays image on the far end plane.
+       
+TrajectoryWidget
+----------------
+.. ocv:class:: TrajectoryWidget
+
+This 3D Widget represents a trajectory. ::
+
+       class CV_EXPORTS TrajectoryWidget : public Widget3D
+       {
+       public:
+               enum {DISPLAY_FRAMES = 1, DISPLAY_PATH = 2};
+               
+               //! Displays trajectory of the given path either by coordinate frames or polyline
+               TrajectoryWidget(const std::vector<Affine3f> &path, int display_mode = TrajectoryWidget::DISPLAY_PATH, const Color &color = Color::white(), double scale = 1.0);
+               //! Displays trajectory of the given path by frustums
+               TrajectoryWidget(const std::vector<Affine3f> &path, const Matx33f &K, double scale = 1.0, const Color &color = Color::white());
+               //! Displays trajectory of the given path by frustums
+               TrajectoryWidget(const std::vector<Affine3f> &path, const Vec2f &fov, double scale = 1.0, const Color &color = Color::white());
+               
+       private:
+               /* hidden */
+       };
+       
+TrajectoryWidget::TrajectoryWidget
+----------------------------------
+Constructs a TrajectoryWidget.
+
+.. ocv:function:: TrajectoryWidget(const std::vector<Affine3f> &path, int display_mode = TrajectoryWidget::DISPLAY_PATH, const Color &color = Color::white(), double scale = 1.0)
+
+       :param path: List of poses on a trajectory.
+       :param display_mode: Display mode. This can be DISPLAY_PATH, DISPLAY_FRAMES, DISPLAY_PATH & DISPLAY_FRAMES.
+       :param color: Color of the polyline that represents path. Frames are not affected.
+       :param scale: Scale of the frames. Polyline is not affected.
+       
+       Displays trajectory of the given path as follows:
+       
+       * DISPLAY_PATH : Displays a poly line that represents the path.
+       * DISPLAY_FRAMES : Displays coordinate frames at each pose.
+       * DISPLAY_PATH & DISPLAY_FRAMES : Displays both poly line and coordinate frames.
+       
+.. ocv:function:: TrajectoryWidget(const std::vector<Affine3f> &path, const Matx33f &K, double scale = 1.0, const Color &color = Color::white())
+
+       :param path: List of poses on a trajectory.
+       :param K: Intrinsic matrix of the camera.
+       :param scale: Scale of the frustums.
+       :param color: Color of the frustums.
+       
+       Displays frustums at each pose of the trajectory.
+       
+.. ocv:function:: TrajectoryWidget(const std::vector<Affine3f> &path, const Vec2f &fov, double scale = 1.0, const Color &color = Color::white())
+
+       :param path: List of poses on a trajectory.
+       :param fov: Field of view of the camera (horizontal, vertical).
+       :param scale: Scale of the frustums.
+       :param color: Color of the frustums.
+       
+       Displays frustums at each pose of the trajectory.
+
+SpheresTrajectoryWidget
+-----------------------
+.. ocv:class:: SpheresTrajectoryWidget
+
+This 3D Widget represents a trajectory using spheres and lines, where spheres represent the positions of the camera, and lines
+represent the direction from previous position to the current. ::
+
+       class CV_EXPORTS SpheresTrajectoryWidget : public Widget3D
+       {
+       public:
+               SpheresTrajectoryWidget(const std::vector<Affine3f> &path, float line_length = 0.05f, 
+                                       double init_sphere_radius = 0.021, sphere_radius = 0.007, 
+                                       Color &line_color = Color::white(), const Color &sphere_color = Color::white());
+       };
+       
+SpheresTrajectoryWidget::SpheresTrajectoryWidget
+------------------------------------------------
+Constructs a SpheresTrajectoryWidget.
+
+.. ocv:function:: SpheresTrajectoryWidget(const std::vector<Affine3f> &path, float line_length = 0.05f, double init_sphere_radius = 0.021, double sphere_radius = 0.007, const Color &line_color = Color::white(), const Color &sphere_color = Color::white())
+       
+       :param path: List of poses on a trajectory.
+       :param line_length: Length of the lines.
+       :param init_sphere_radius: Radius of the first sphere which represents the initial position of the camera.
+       :param sphere_radius: Radius of the rest of the spheres.
+       :param line_color: Color of the lines.
+       :param sphere_color: Color of the spheres.
+       
+CloudWidget
+-----------
+.. ocv:class:: CloudWidget
+
+This 3D Widget defines a point cloud. ::
+
+       class CV_EXPORTS CloudWidget : public Widget3D
+       {
+       public:
+               //! Each point in cloud is mapped to a color in colors
+               CloudWidget(InputArray cloud, InputArray colors);
+               //! All points in cloud have the same color
+               CloudWidget(InputArray cloud, const Color &color = Color::white());
+
+       private:
+               /* hidden */
+       };
+       
+CloudWidget::CloudWidget
+------------------------
+Constructs a CloudWidget.
+
+.. ocv:function:: CloudWidget(InputArray cloud, InputArray colors)
+
+       :param cloud: Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4.
+       :param colors: Set of colors. It has to be of the same size with cloud.
+       
+       Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). 
+
+.. ocv:function:: CloudWidget(InputArray cloud, const Color &color = Color::white())
+       
+       :param cloud: Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4.
+       :param color: A single color for the whole cloud.
+
+       Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). 
+
+CloudCollectionWidget
+---------------------
+.. ocv:class:: CloudCollectionWidget
+
+This 3D Widget defines a collection of clouds. ::
+
+       class CV_EXPORTS CloudCollectionWidget : public Widget3D
+       {
+       public:
+               CloudCollectionWidget();
+               
+               //! Each point in cloud is mapped to a color in colors
+               void addCloud(InputArray cloud, InputArray colors, const Affine3f &pose = Affine3f::Identity());
+               //! All points in cloud have the same color
+               void addCloud(InputArray cloud, const Color &color = Color::white(), Affine3f &pose = Affine3f::Identity());
+               
+       private:
+               /* hidden */
+       };
+       
+CloudCollectionWidget::CloudCollectionWidget
+--------------------------------------------
+Constructs a CloudCollectionWidget.
+
+.. ocv:function:: CloudCollectionWidget()
+
+CloudCollectionWidget::addCloud
+-------------------------------
+Adds a cloud to the collection.
+
+.. ocv:function:: void addCloud(InputArray cloud, InputArray colors, const Affine3f &pose = Affine3f::Identity())
+
+       :param cloud: Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4.
+       :param colors: Set of colors. It has to be of the same size with cloud.
+       :param pose: Pose of the cloud.
+       
+       Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). 
+       
+.. ocv:function:: void addCloud(InputArray cloud, const Color &color = Color::white(), const Affine3f &pose = Affine3f::Identity())
+
+       :param cloud: Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4.
+       :param colors: A single color for the whole cloud.
+       :param pose: Pose of the cloud.
+       
+       Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). 
+       
+CloudNormalsWidget
+------------------
+.. ocv:class:: CloudNormalsWidget
+
+This 3D Widget represents normals of a point cloud. ::
+
+       class CV_EXPORTS CloudNormalsWidget : public Widget3D
+       {
+       public:
+               CloudNormalsWidget(InputArray cloud, InputArray normals, int level = 100, float scale = 0.02f, const Color &color = Color::white());
+
+       private:
+               /* hidden */
+       };
+       
+CloudNormalsWidget::CloudNormalsWidget
+--------------------------------------
+Constructs a CloudNormalsWidget.
+
+.. ocv:function:: CloudNormalsWidget(InputArray cloud, InputArray normals, int level = 100, float scale = 0.02f, const Color &color = Color::white())
+       
+       :param cloud: Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4.
+       :param normals: A set of normals that has to be of same type with cloud.
+       :param level: Display only every levelth normal.
+       :param scale: Scale of the arrows that represent normals.
+       :param color: Color of the arrows that represent normals.
+       
+MeshWidget
+----------
+.. ocv:class:: MeshWidget
+
+This 3D Widget defines a mesh. ::
+       
+       class CV_EXPORTS MeshWidget : public Widget3D
+       {
+       public:
+               MeshWidget(const Mesh3d &mesh);
+               
+       private:
+               /* hidden */
+       };
+       
+MeshWidget::MeshWidget
+----------------------
+Constructs a MeshWidget.
+
+.. ocv:function:: MeshWidget(const Mesh3d &mesh)
+
+       :param mesh: Mesh object that will be displayed.
+
+
+
+