Open Source Computer Vision Library https://opencv.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

556 lines
16 KiB

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.