Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
c31fb8ff
Commit
c31fb8ff
authored
Sep 15, 2013
by
Ozan Tonkal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rename widgets from *Widgets to W*
parent
f570b3e1
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
514 additions
and
625 deletions
+514
-625
creating_widgets.rst
doc/tutorials/viz/creating_widgets.rst
+9
-9
transformations.rst
doc/tutorials/viz/transformations.rst
+7
-7
widget_pose.rst
doc/tutorials/viz/widget_pose.rst
+10
-10
widget.rst
modules/viz/doc/widget.rst
+216
-216
widgets.hpp
modules/viz/include/opencv2/viz/widgets.hpp
+73
-73
cloud_widgets.cpp
modules/viz/src/cloud_widgets.cpp
+19
-19
shape_widgets.cpp
modules/viz/src/shape_widgets.cpp
+73
-73
test_viz3d.cpp
modules/viz/test/test_viz3d.cpp
+96
-207
creating_widgets.cpp
samples/cpp/tutorial_code/viz/creating_widgets.cpp
+4
-4
transformations.cpp
samples/cpp/tutorial_code/viz/transformations.cpp
+4
-4
widget_pose.cpp
samples/cpp/tutorial_code/viz/widget_pose.cpp
+3
-3
No files found.
doc/tutorials/viz/creating_widgets.rst
View file @
c31fb8ff
...
...
@@ -37,19 +37,19 @@ You can download the code from `here <../../../../samples/cpp/tutorial_code/viz/
using namespace std;
/**
* @class
TriangleWidget
* @class
WTriangle
* @brief Defining our own 3D Triangle widget
*/
class
TriangleWidget
: public viz::Widget3D
class
WTriangle
: public viz::Widget3D
{
public:
TriangleWidget
(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color = viz::Color::white());
WTriangle
(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color = viz::Color::white());
};
/**
* @function
TriangleWidget::TriangleWidget
* @function
WTriangle::WTriangle
*/
TriangleWidget::TriangleWidget
(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color)
WTriangle::WTriangle
(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color)
{
// Create a triangle
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
...
...
@@ -99,7 +99,7 @@ You can download the code from `here <../../../../samples/cpp/tutorial_code/viz/
viz::Viz3d myWindow("Creating Widgets");
/// Create a triangle widget
TriangleWidget
tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red());
WTriangle
tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red());
/// Show widget in the visualizer window
myWindow.showWidget("TRIANGLE", tw);
...
...
@@ -119,10 +119,10 @@ Here is the general structure of the program:
.. code-block:: cpp
class
TriangleWidget
: public viz::Widget3D
class
WTriangle
: public viz::Widget3D
{
public:
TriangleWidget
(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color = viz::Color::white());
WTriangle
(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color = viz::Color::white());
};
* Assign a VTK actor to the widget.
...
...
@@ -144,7 +144,7 @@ Here is the general structure of the program:
.. code-block:: cpp
/// Create a triangle widget
TriangleWidget
tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red());
WTriangle
tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red());
/// Show widget in the visualizer window
myWindow.showWidget("TRIANGLE", tw);
...
...
doc/tutorials/viz/transformations.rst
View file @
c31fb8ff
...
...
@@ -67,7 +67,7 @@ You can download the code from `here <../../../../samples/cpp/tutorial_code/viz/
viz::Viz3d myWindow("Coordinate Frame");
/// Add coordinate axes
myWindow.showWidget("Coordinate Widget", viz::
CoordinateSystemWidget
());
myWindow.showWidget("Coordinate Widget", viz::
WCoordinateSystem
());
/// Let's assume camera has the following properties
Point3f cam_pos(3.0f,3.0f,3.0f), cam_focal_point(3.0f,3.0f,2.0f), cam_y_dir(-1.0f,0.0f,0.0f);
...
...
@@ -81,7 +81,7 @@ You can download the code from `here <../../../../samples/cpp/tutorial_code/viz/
/// Create a cloud widget.
Mat bunny_cloud = cvcloud_load();
viz::
CloudWidget
cloud_widget(bunny_cloud, viz::Color::green());
viz::
WCloud
cloud_widget(bunny_cloud, viz::Color::green());
/// Pose of the widget in camera frame
Affine3f cloud_pose = Affine3f().translate(Vec3f(0.0f,0.0f,3.0f));
...
...
@@ -91,8 +91,8 @@ You can download the code from `here <../../../../samples/cpp/tutorial_code/viz/
/// Visualize camera frame
if (!camera_pov)
{
viz::
CameraPositionWidget
cpw(0.5); // Coordinate axes
viz::
CameraPositionWidget
cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustum
viz::
WCameraPosition
cpw(0.5); // Coordinate axes
viz::
WCameraPosition
cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustum
myWindow.showWidget("CPW", cpw, cam_pose);
myWindow.showWidget("CPW_FRUSTUM", cpw_frustum, cam_pose);
}
...
...
@@ -147,7 +147,7 @@ Here is the general structure of the program:
/// Create a cloud widget.
Mat bunny_cloud = cvcloud_load();
viz::
CloudWidget
cloud_widget(bunny_cloud, viz::Color::green());
viz::
WCloud
cloud_widget(bunny_cloud, viz::Color::green());
* Given the pose in camera coordinate system, estimate the global pose.
...
...
@@ -165,8 +165,8 @@ Here is the general structure of the program:
/// Visualize camera frame
if (!camera_pov)
{
viz::
CameraPositionWidget
cpw(0.5); // Coordinate axes
viz::
CameraPositionWidget
cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustum
viz::
WCameraPosition
cpw(0.5); // Coordinate axes
viz::
WCameraPosition
cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustum
myWindow.showWidget("CPW", cpw, cam_pose);
myWindow.showWidget("CPW_FRUSTUM", cpw_frustum, cam_pose);
}
...
...
doc/tutorials/viz/widget_pose.rst
View file @
c31fb8ff
...
...
@@ -37,16 +37,16 @@ You can download the code from `here <../../../../samples/cpp/tutorial_code/viz/
viz::Viz3d myWindow("Coordinate Frame");
/// Add coordinate axes
myWindow.showWidget("Coordinate Widget", viz::
CoordinateSystemWidget
());
myWindow.showWidget("Coordinate Widget", viz::
WCoordinateSystem
());
/// Add line to represent (1,1,1) axis
viz::
LineWidget
axis(Point3f(-1.0f,-1.0f,-1.0f), Point3f(1.0f,1.0f,1.0f));
axis.setRenderingProperty(viz::
VIZ_
LINE_WIDTH, 4.0);
viz::
WLine
axis(Point3f(-1.0f,-1.0f,-1.0f), Point3f(1.0f,1.0f,1.0f));
axis.setRenderingProperty(viz::LINE_WIDTH, 4.0);
myWindow.showWidget("Line Widget", axis);
/// Construct a cube widget
viz::
CubeWidget
cube_widget(Point3f(0.5,0.5,0.0), Point3f(0.0,0.0,-0.5), true, viz::Color::blue());
cube_widget.setRenderingProperty(viz::
VIZ_
LINE_WIDTH, 4.0);
viz::
WCube
cube_widget(Point3f(0.5,0.5,0.0), Point3f(0.0,0.0,-0.5), true, viz::Color::blue());
cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0);
/// Display widget (update if already displayed)
myWindow.showWidget("Cube Widget", cube_widget);
...
...
@@ -97,15 +97,15 @@ Here is the general structure of the program:
.. code-block:: cpp
/// Add coordinate axes
myWindow.showWidget("Coordinate Widget", viz::
CoordinateSystemWidget
());
myWindow.showWidget("Coordinate Widget", viz::
WCoordinateSystem
());
* Display a line representing the axis (1,1,1).
.. code-block:: cpp
/// Add line to represent (1,1,1) axis
viz::
LineWidget
axis(Point3f(-1.0f,-1.0f,-1.0f), Point3f(1.0f,1.0f,1.0f));
axis.setRenderingProperty(viz::
VIZ_
LINE_WIDTH, 4.0);
viz::
WLine
axis(Point3f(-1.0f,-1.0f,-1.0f), Point3f(1.0f,1.0f,1.0f));
axis.setRenderingProperty(viz::LINE_WIDTH, 4.0);
myWindow.showWidget("Line Widget", axis);
* Construct a cube.
...
...
@@ -113,8 +113,8 @@ Here is the general structure of the program:
.. code-block:: cpp
/// Construct a cube widget
viz::
CubeWidget
cube_widget(Point3f(0.5,0.5,0.0), Point3f(0.0,0.0,-0.5), true, viz::Color::blue());
cube_widget.setRenderingProperty(viz::
VIZ_
LINE_WIDTH, 4.0);
viz::
WCube
cube_widget(Point3f(0.5,0.5,0.0), Point3f(0.0,0.0,-0.5), true, viz::Color::blue());
cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0);
myWindow.showWidget("Cube Widget", cube_widget);
* Create rotation matrix from rodrigues vector
...
...
modules/viz/doc/widget.rst
View file @
c31fb8ff
...
...
@@ -14,7 +14,7 @@ and modify the widget without re-adding the widget.
...
/// Create a cloud widget
viz::
CloudWidget
cw(cloud, viz::Color::red());
viz::
WCloud
cw(cloud, viz::Color::red());
/// Display it in a window
myWindow.showWidget("CloudWidget1", cw);
/// Modify it, and it will be modified in the window.
...
...
@@ -118,9 +118,9 @@ Casts a widget to another.
.. code-block:: cpp
// Create a sphere widget
viz::
SphereWidget
sw(Point3f(0.0f,0.0f,0.0f), 0.5f);
viz::
WSphere
sw(Point3f(0.0f,0.0f,0.0f), 0.5f);
// Cast sphere widget to cloud widget
viz::
CloudWidget cw = sw.cast<viz::CloudWidget
>();
viz::
WCloud cw = sw.cast<viz::WCloud
>();
.. note:: 3D Widgets can only be cast to 3D Widgets. 2D Widgets can only be cast to 2D Widgets.
...
...
@@ -231,100 +231,100 @@ Sets the color of the widget.
:param color: color of type :ocv:class:`Color`
viz::
LineWidget
----------
-----
.. ocv:class::
LineWidget
viz::
WLine
----------
.. ocv:class::
WLine
This 3D Widget defines a finite line. ::
class CV_EXPORTS
LineWidget
: public Widget3D
class CV_EXPORTS
WLine
: public Widget3D
{
public:
LineWidget
(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
WLine
(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
};
viz::
LineWidget::LineWidget
-----------------
----------
Constructs a
LineWidget
.
viz::
WLine::WLine
-----------------
Constructs a
WLine
.
.. ocv:function::
LineWidget
(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white())
.. ocv:function::
WLine
(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: :ocv:class:`Color` of the line.
viz::
PlaneWidget
-----------
-----
.. ocv:class::
PlaneWidget
viz::
WPlane
-----------
.. ocv:class::
WPlane
This 3D Widget defines a finite plane. ::
class CV_EXPORTS
PlaneWidget
: public Widget3D
class CV_EXPORTS
WPlane
: 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());
WPlane
(const Vec4f& coefs, double size = 1.0, const Color &color = Color::white());
WPlane
(const Vec4f& coefs, const Point3f& pt, double size = 1.0, const Color &color = Color::white());
private:
/* hidden */
};
viz::
PlaneWidget::PlaneWidget
-------------------
----------
Constructs a
PlaneWidget
.
viz::
WPlane::WPlane
-------------------
Constructs a
WPlane
.
.. ocv:function::
PlaneWidget
(const Vec4f& coefs, double size = 1.0, const Color &color = Color::white())
.. ocv:function::
WPlane
(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: :ocv:class:`Color` of the plane.
.. ocv:function::
PlaneWidget
(const Vec4f& coefs, const Point3f& pt, double size = 1.0, const Color &color = Color::white())
.. ocv:function::
WPlane
(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 size: Size of the plane.
:param color: :ocv:class:`Color` of the plane.
viz::
SphereWidget
------------
-----
.. ocv:class::
SphereWidget
viz::
WSphere
------------
.. ocv:class::
WSphere
This 3D Widget defines a sphere. ::
class CV_EXPORTS
SphereWidget
: public Widget3D
class CV_EXPORTS
WSphere
: public Widget3D
{
public:
SphereWidget
(const cv::Point3f ¢er, float radius, int sphere_resolution = 10, const Color &color = Color::white())
WSphere
(const cv::Point3f ¢er, float radius, int sphere_resolution = 10, const Color &color = Color::white())
};
viz::
SphereWidget::SphereWidget
---------------------
----------
Constructs a
SphereWidget
.
viz::
WSphere::WSphere
---------------------
Constructs a
WSphere
.
.. ocv:function::
SphereWidget
(const cv::Point3f ¢er, float radius, int sphere_resolution = 10, const Color &color = Color::white())
.. ocv:function::
WSphere
(const cv::Point3f ¢er, 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: :ocv:class:`Color` of the sphere.
viz::
ArrowWidget
viz::
WArrow
----------------
.. ocv:class::
ArrowWidget
.. ocv:class::
WArrow
This 3D Widget defines an arrow. ::
class CV_EXPORTS
ArrowWidget
: public Widget3D
class CV_EXPORTS
WArrow
: public Widget3D
{
public:
ArrowWidget
(const Point3f& pt1, const Point3f& pt2, double thickness = 0.03, const Color &color = Color::white());
WArrow
(const Point3f& pt1, const Point3f& pt2, double thickness = 0.03, const Color &color = Color::white());
};
viz::
ArrowWidget::ArrowWidget
viz::
WArrow::WArrow
-----------------------------
Constructs an
ArrowWidget
.
Constructs an
WArrow
.
.. ocv:function::
ArrowWidget
(const Point3f& pt1, const Point3f& pt2, double thickness = 0.03, const Color &color = Color::white())
.. ocv:function::
WArrow
(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.
...
...
@@ -333,46 +333,46 @@ Constructs an ArrowWidget.
Arrow head is located at the end point of the arrow.
viz::
CircleWidget
viz::
WCircle
-----------------
.. ocv:class::
CircleWidget
.. ocv:class::
WCircle
This 3D Widget defines a circle. ::
class CV_EXPORTS
CircleWidget
: public Widget3D
class CV_EXPORTS
WCircle
: public Widget3D
{
public:
CircleWidget
(const Point3f& pt, double radius, double thickness = 0.01, const Color &color = Color::white());
WCircle
(const Point3f& pt, double radius, double thickness = 0.01, const Color &color = Color::white());
};
viz::
CircleWidget::CircleWidget
viz::
WCircle::WCircle
-------------------------------
Constructs a
CircleWidget
.
Constructs a
WCircle
.
.. ocv:function::
CircleWidget
(const Point3f& pt, double radius, double thickness = 0.01, const Color &color = Color::white())
.. ocv:function::
WCircle
(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: :ocv:class:`Color` of the circle.
viz::
CylinderWidget
--------------
-----
.. ocv:class::
CylinderWidget
viz::
WCylinder
--------------
.. ocv:class::
WCylinder
This 3D Widget defines a cylinder. ::
class CV_EXPORTS
CylinderWidget
: public Widget3D
class CV_EXPORTS
WCylinder
: public Widget3D
{
public:
CylinderWidget
(const Point3f& pt_on_axis, const Point3f& axis_direction, double radius, int numsides = 30, const Color &color = Color::white());
WCylinder
(const Point3f& pt_on_axis, const Point3f& axis_direction, double radius, int numsides = 30, const Color &color = Color::white());
};
viz::
CylinderWidget::CylinderWidget
viz::
WCylinder::WCylinder
-----------------------------------
Constructs a
CylinderWidget
.
Constructs a
WCylinder
.
.. ocv:function::
CylinderWidget
(const Point3f& pt_on_axis, const Point3f& axis_direction, double radius, int numsides = 30, const Color &color = Color::white())
.. ocv:function::
WCylinder
(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.
...
...
@@ -380,23 +380,23 @@ Constructs a CylinderWidget.
:param numsides: Resolution of the cylinder.
:param color: :ocv:class:`Color` of the cylinder.
viz::
CubeWidget
----------
-----
.. ocv:class::
CubeWidget
viz::
WCube
----------
.. ocv:class::
WCube
This 3D Widget defines a cube. ::
class CV_EXPORTS
CubeWidget
: public Widget3D
class CV_EXPORTS
WCube
: public Widget3D
{
public:
CubeWidget
(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame = true, const Color &color = Color::white());
WCube
(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame = true, const Color &color = Color::white());
};
viz::
CubeWidget::CubeWidget
viz::
WCube::WCube
---------------------------
Constructs a
CudeWidget
.
Constructs a
WCube
.
.. ocv:function::
CubeWidget
(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame = true, const Color &color = Color::white())
.. ocv:function::
WCube
(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.
...
...
@@ -407,104 +407,104 @@ Constructs a CudeWidget.
:alt: Cube Widget
:align: center
viz::
CoordinateSystemWidget
----------------------
-----
.. ocv:class::
CoordinateSystemWidget
viz::
WCoordinateSystem
----------------------
.. ocv:class::
WCoordinateSystem
This 3D Widget represents a coordinate system. ::
class CV_EXPORTS
CoordinateSystemWidget
: public Widget3D
class CV_EXPORTS
WCoordinateSystem
: public Widget3D
{
public:
CoordinateSystemWidget
(double scale = 1.0);
WCoordinateSystem
(double scale = 1.0);
};
viz::
CoordinateSystemWidget::CoordinateSystemWidget
viz::
WCoordinateSystem::WCoordinateSystem
---------------------------------------------------
Constructs a
CoordinateSystemWidget
.
Constructs a
WCoordinateSystem
.
.. ocv:function::
CoordinateSystemWidget
(double scale = 1.0)
.. ocv:function::
WCoordinateSystem
(double scale = 1.0)
:param scale: Determines the size of the axes.
viz::
PolyLineWidget
--------------
-----
.. ocv:class::
PolyLineWidget
viz::
WPolyLine
--------------
.. ocv:class::
WPolyLine
This 3D Widget defines a poly line. ::
class CV_EXPORTS
PolyLineWidget
: public Widget3D
class CV_EXPORTS
WPolyLine
: public Widget3D
{
public:
PolyLineWidget
(InputArray points, const Color &color = Color::white());
WPolyLine
(InputArray points, const Color &color = Color::white());
private:
/* hidden */
};
viz::
PolyLineWidget::PolyLineWidget
viz::
WPolyLine::WPolyLine
-----------------------------------
Constructs a
PolyLineWidget
.
Constructs a
WPolyLine
.
.. ocv:function::
PolyLineWidget
(InputArray points, const Color &color = Color::white())
.. ocv:function::
WPolyLine
(InputArray points, const Color &color = Color::white())
:param points: Point set.
:param color: :ocv:class:`Color` of the poly line.
viz::
GridWidget
----------
-----
.. ocv:class::
GridWidget
viz::
WGrid
----------
.. ocv:class::
WGrid
This 3D Widget defines a grid. ::
class CV_EXPORTS
GridWidget
: public Widget3D
class CV_EXPORTS
WGrid
: public Widget3D
{
public:
//! Creates grid at the origin
GridWidget
(const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white());
WGrid
(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());
WGrid
(const Vec4f &coeffs, const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white());
private:
/* hidden */
};
viz::
GridWidget::GridWidget
viz::
WGrid::WGrid
---------------------------
Constructs a
GridWidget
.
Constructs a
WGrid
.
.. ocv:function::
GridWidget
(const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white())
.. ocv:function::
WGrid
(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: :ocv:class:`Color` of the grid.
.. ocv:function:
GridWidget
(const Vec4f &coeffs, const Vec2i &dimensions, const Vec2d &spacing, const Color &color = Color::white())
.. ocv:function:
WGrid
(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: :ocv:class:`Color` of the grid.
viz::
Text3DWidget
------------
-----
.. ocv:class::
Text3DWidget
viz::
WText3D
------------
.. ocv:class::
WText3D
This 3D Widget represents 3D text. The text always faces the camera. ::
class CV_EXPORTS
Text3DWidget
: public Widget3D
class CV_EXPORTS
WText3D
: public Widget3D
{
public:
Text3DWidget
(const String &text, const Point3f &position, double text_scale = 1.0, double face_camera = true, const Color &color = Color::white());
WText3D
(const String &text, const Point3f &position, double text_scale = 1.0, double face_camera = true, const Color &color = Color::white());
void setText(const String &text);
String getText() const;
};
viz::
Text3DWidget::Text3DWidget
viz::
WText3D::WText3D
-------------------------------
Constructs a
Text3DWidget
.
Constructs a
WText3D
.
.. ocv:function::
Text3DWidget
(const String &text, const Point3f &position, double text_scale = 1.0, double face_camera = true, const Color &color = Color::white())
.. ocv:function::
WText3D
(const String &text, const Point3f &position, double text_scale = 1.0, double face_camera = true, const Color &color = Color::white())
:param text: Text content of the widget.
:param position: Position of the text.
...
...
@@ -512,118 +512,118 @@ Constructs a Text3DWidget.
:param face_camera: If true, text always faces the camera.
:param color: :ocv:class:`Color` of the text.
viz::
Text3DWidget
::setText
---------------------
-----
viz::
WText3D
::setText
---------------------
Sets the text content of the widget.
.. ocv:function:: void setText(const String &text)
:param text: Text content of the widget.
viz::
Text3DWidget
::getText
---------------------
-----
viz::
WText3D
::getText
---------------------
Returns the current text content of the widget.
.. ocv:function:: String getText() const
viz::
TextWidge
t
----------
-----
.. ocv:class::
TextWidge
t
viz::
WTex
t
----------
.. ocv:class::
WTex
t
This 2D Widget represents text overlay. ::
class CV_EXPORTS
TextWidge
t : public Widget2D
class CV_EXPORTS
WTex
t : public Widget2D
{
public:
TextWidge
t(const String &text, const Point2i &pos, int font_size = 10, const Color &color = Color::white());
WTex
t(const String &text, const Point2i &pos, int font_size = 10, const Color &color = Color::white());
void setText(const String &text);
String getText() const;
};
viz::
TextWidget::TextWidge
t
-----------------
----------
Constructs a
TextWidge
t.
viz::
WText::WTex
t
-----------------
Constructs a
WTex
t.
.. ocv:function::
TextWidge
t(const String &text, const Point2i &pos, int font_size = 10, const Color &color = Color::white())
.. ocv:function::
WTex
t(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: :ocv:class:`Color` of the text.
viz::
TextWidge
t::setText
-------------------
-----
viz::
WTex
t::setText
-------------------
Sets the text content of the widget.
.. ocv:function:: void setText(const String &text)
:param text: Text content of the widget.
viz::
TextWidge
t::getText
-------------------
-----
viz::
WTex
t::getText
-------------------
Returns the current text content of the widget.
.. ocv:function:: String getText() const
viz::
ImageOverlayWidget
------------------
-----
.. ocv:class::
ImageOverlayWidget
viz::
WImageOverlay
------------------
.. ocv:class::
WImageOverlay
This 2D Widget represents an image overlay. ::
class CV_EXPORTS
ImageOverlayWidget
: public Widget2D
class CV_EXPORTS
WImageOverlay
: public Widget2D
{
public:
ImageOverlayWidget
(const Mat &image, const Rect &rect);
WImageOverlay
(const Mat &image, const Rect &rect);
void setImage(const Mat &image);
};
viz::
ImageOverlayWidget::ImageOverlayWidget
---------------------------------
----------
Constructs an
ImageOverlayWidget
.
viz::
WImageOverlay::WImageOverlay
---------------------------------
Constructs an
WImageOverlay
.
.. ocv:function::
ImageOverlayWidget
(const Mat &image, const Rect &rect)
.. ocv:function::
WImageOverlay
(const Mat &image, const Rect &rect)
:param image: BGR or Gray-Scale image.
:param rect: Image is scaled and positioned based on rect.
viz::
ImageOverlayWidget
::setImage
----------------------------
-----
viz::
WImageOverlay
::setImage
----------------------------
Sets the image content of the widget.
.. ocv:function:: void setImage(const Mat &image)
:param image: BGR or Gray-Scale image.
viz::
Image3DWidget
-------------
-----
.. ocv:class::
Image3DWidget
viz::
WImage3D
-------------
.. ocv:class::
WImage3D
This 3D Widget represents an image in 3D space. ::
class CV_EXPORTS
Image3DWidget
: public Widget3D
class CV_EXPORTS
WImage3D
: public Widget3D
{
public:
//! Creates 3D image at the origin
Image3DWidget
(const Mat &image, const Size &size);
WImage3D
(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);
WImage3D
(const Vec3f &position, const Vec3f &normal, const Vec3f &up_vector, const Mat &image, const Size &size);
void setImage(const Mat &image);
};
viz::
Image3DWidget::Image3DWidget
-----------------------
----------
Constructs an
Image3DWidget
.
viz::
WImage3D::WImage3D
-----------------------
Constructs an
WImage3D
.
.. ocv:function::
Image3DWidget
(const Mat &image, const Size &size)
.. ocv:function::
WImage3D
(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)
.. ocv:function::
WImage3D
(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.
...
...
@@ -631,42 +631,42 @@ Constructs an Image3DWidget.
:param image: BGR or Gray-Scale image.
:param size: Size of the image.
viz::
Image3DWidget
::setImage
-----------------------
-----
viz::
WImage3D
::setImage
-----------------------
Sets the image content of the widget.
.. ocv:function:: void setImage(const Mat &image)
:param image: BGR or Gray-Scale image.
viz::
CameraPositionWidget
--------------------
-----
.. ocv:class::
CameraPositionWidget
viz::
WCameraPosition
--------------------
.. ocv:class::
WCameraPosition
This 3D Widget represents camera position in a scene by its axes or viewing frustum. ::
class CV_EXPORTS
CameraPositionWidget
: public Widget3D
class CV_EXPORTS
WCameraPosition
: public Widget3D
{
public:
//! Creates camera coordinate frame (axes) at the origin
CameraPositionWidget
(double scale = 1.0);
WCameraPosition
(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());
WCameraPosition
(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());
WCameraPosition
(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());
WCameraPosition
(const Matx33f &K, const Mat &img, double scale = 1.0, const Color &color = Color::white());
//! Creates frustum and display given image at the far plane
CameraPositionWidget
(const Vec2f &fov, const Mat &img, double scale = 1.0, const Color &color = Color::white());
WCameraPosition
(const Vec2f &fov, const Mat &img, double scale = 1.0, const Color &color = Color::white());
};
viz::
CameraPositionWidget::CameraPositionWidget
-------------------------------------
----------
Constructs a
CameraPositionWidget
.
viz::
WCameraPosition::WCameraPosition
-------------------------------------
Constructs a
WCameraPosition
.
- **Display camera coordinate frame.**
.. ocv:function::
CameraPositionWidget
(double scale = 1.0)
.. ocv:function::
WCameraPosition
(double scale = 1.0)
Creates camera coordinate frame at the origin.
...
...
@@ -676,7 +676,7 @@ Constructs a CameraPositionWidget.
- **Display the viewing frustum.**
.. ocv:function::
CameraPositionWidget
(const Matx33f &K, double scale = 1.0, const Color &color = Color::white())
.. ocv:function::
WCameraPosition
(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.
...
...
@@ -684,7 +684,7 @@ Constructs a CameraPositionWidget.
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())
.. ocv:function::
WCameraPosition
(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.
...
...
@@ -698,7 +698,7 @@ Constructs a CameraPositionWidget.
- **Display image on the far plane of the viewing frustum.**
.. ocv:function::
CameraPositionWidget
(const Matx33f &K, const Mat &img, double scale = 1.0, const Color &color = Color::white())
.. ocv:function::
WCameraPosition
(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 on the far plane of the frustum.
...
...
@@ -707,7 +707,7 @@ Constructs a CameraPositionWidget.
Creates viewing frustum of the camera based on its intrinsic matrix K, and displays image on the far end plane.
.. ocv:function::
CameraPositionWidget
(const Vec2f &fov, const Mat &img, double scale = 1.0, const Color &color = Color::white())
.. ocv:function::
WCameraPosition
(const Vec2f &fov, const Mat &img, double scale = 1.0, const Color &color = Color::white())
:param fov: Field of view of the camera (horizontal, vertical).
:param img: BGR or Gray-Scale image that is going to be displayed on the far plane of the frustum.
...
...
@@ -720,33 +720,33 @@ Constructs a CameraPositionWidget.
:alt: Camera viewing frustum with image
:align: center
viz::
TrajectoryWidget
----------------
-----
.. ocv:class::
TrajectoryWidget
viz::
WTrajectory
----------------
.. ocv:class::
WTrajectory
This 3D Widget represents a trajectory. ::
class CV_EXPORTS
TrajectoryWidget
: public Widget3D
class CV_EXPORTS
WTrajectory
: 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);
WTrajectory(const std::vector<Affine3f> &path, int display_mode = WTrajectory
::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());
WTrajectory
(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());
WTrajectory
(const std::vector<Affine3f> &path, const Vec2f &fov, double scale = 1.0, const Color &color = Color::white());
private:
/* hidden */
};
viz::
TrajectoryWidget::TrajectoryWidget
-----------------------------
----------
Constructs a
TrajectoryWidget
.
viz::
WTrajectory::WTrajectory
-----------------------------
Constructs a
WTrajectory
.
.. ocv:function::
TrajectoryWidget(const std::vector<Affine3f> &path, int display_mode = TrajectoryWidget
::DISPLAY_PATH, const Color &color = Color::white(), double scale = 1.0)
.. ocv:function::
WTrajectory(const std::vector<Affine3f> &path, int display_mode = WTrajectory
::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.
...
...
@@ -759,7 +759,7 @@ Constructs a TrajectoryWidget.
* 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())
.. ocv:function::
WTrajectory
(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.
...
...
@@ -768,7 +768,7 @@ Constructs a TrajectoryWidget.
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())
.. ocv:function::
WTrajectory
(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).
...
...
@@ -777,26 +777,26 @@ Constructs a TrajectoryWidget.
Displays frustums at each pose of the trajectory.
viz::
SpheresTrajectoryWidget
-----------------------
-----
.. ocv:class::
SpheresTrajectoryWidget
viz::
WSpheresTrajectory
-----------------------
.. ocv:class::
WSpheresTrajectory
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
class CV_EXPORTS
WSpheresTrajectory
: public Widget3D
{
public:
SpheresTrajectoryWidget
(const std::vector<Affine3f> &path, float line_length = 0.05f,
WSpheresTrajectory
(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());
};
viz::
SpheresTrajectoryWidget::SpheresTrajectoryWidget
-------------------------------------------
----------
Constructs a
SpheresTrajectoryWidget
.
viz::
WSpheresTrajectory::WSpheresTrajectory
-------------------------------------------
Constructs a
WSpheresTrajectory
.
.. 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())
.. ocv:function::
WSpheresTrajectory
(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.
...
...
@@ -805,36 +805,36 @@ Constructs a SpheresTrajectoryWidget.
:param line_color: :ocv:class:`Color` of the lines.
:param sphere_color: :ocv:class:`Color` of the spheres.
viz::
CloudWidget
-----------
-----
.. ocv:class::
CloudWidget
viz::
WCloud
-----------
.. ocv:class::
WCloud
This 3D Widget defines a point cloud. ::
class CV_EXPORTS
CloudWidget
: public Widget3D
class CV_EXPORTS
WCloud
: public Widget3D
{
public:
//! Each point in cloud is mapped to a color in colors
CloudWidget
(InputArray cloud, InputArray colors);
WCloud
(InputArray cloud, InputArray colors);
//! All points in cloud have the same color
CloudWidget
(InputArray cloud, const Color &color = Color::white());
WCloud
(InputArray cloud, const Color &color = Color::white());
private:
/* hidden */
};
viz::
CloudWidget::CloudWidget
-------------------
----------
Constructs a
CloudWidget
.
viz::
WCloud::WCloud
-------------------
Constructs a
WCloud
.
.. ocv:function::
CloudWidget
(InputArray cloud, InputArray colors)
.. ocv:function::
WCloud
(InputArray cloud, InputArray colors)
:param cloud: Set of points 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())
.. ocv:function::
WCloud
(InputArray cloud, const Color &color = Color::white())
:param cloud: Set of points which can be of type: ``CV_32FC3``, ``CV_32FC4``, ``CV_64FC3``, ``CV_64FC4``.
:param color: A single :ocv:class:`Color` for the whole cloud.
...
...
@@ -843,16 +843,16 @@ Constructs a CloudWidget.
.. note:: In case there are four channels in the cloud, fourth channel is ignored.
viz::
CloudCollectionWidget
---------------------
-----
.. ocv:class::
CloudCollectionWidget
viz::
WCloudCollection
---------------------
.. ocv:class::
WCloudCollection
This 3D Widget defines a collection of clouds. ::
class CV_EXPORTS
CloudCollectionWidget
: public Widget3D
class CV_EXPORTS
WCloudCollection
: public Widget3D
{
public:
CloudCollectionWidget
();
WCloudCollection
();
//! Each point in cloud is mapped to a color in colors
void addCloud(InputArray cloud, InputArray colors, const Affine3f &pose = Affine3f::Identity());
...
...
@@ -863,14 +863,14 @@ This 3D Widget defines a collection of clouds. ::
/* hidden */
};
viz::
CloudCollectionWidget::CloudCollectionWidget
---------------------------------------
----------
Constructs a
CloudCollectionWidget
.
viz::
WCloudCollection::WCloudCollection
---------------------------------------
Constructs a
WCloudCollection
.
.. ocv:function::
CloudCollectionWidget
()
.. ocv:function::
WCloudCollection
()
viz::
CloudCollectionWidget
::addCloud
-------------------------------
-----
viz::
WCloudCollection
::addCloud
-------------------------------
Adds a cloud to the collection.
.. ocv:function:: void addCloud(InputArray cloud, InputArray colors, const Affine3f &pose = Affine3f::Identity())
...
...
@@ -891,26 +891,26 @@ Adds a cloud to the collection.
.. note:: In case there are four channels in the cloud, fourth channel is ignored.
viz::
CloudNormalsWidget
------------------
-----
.. ocv:class::
CloudNormalsWidget
viz::
WCloudNormals
------------------
.. ocv:class::
WCloudNormals
This 3D Widget represents normals of a point cloud. ::
class CV_EXPORTS
CloudNormalsWidget
: public Widget3D
class CV_EXPORTS
WCloudNormals
: public Widget3D
{
public:
CloudNormalsWidget
(InputArray cloud, InputArray normals, int level = 100, float scale = 0.02f, const Color &color = Color::white());
WCloudNormals
(InputArray cloud, InputArray normals, int level = 100, float scale = 0.02f, const Color &color = Color::white());
private:
/* hidden */
};
viz::
CloudNormalsWidget::CloudNormalsWidget
---------------------------------
----------
Constructs a
CloudNormalsWidget
.
viz::
WCloudNormals::WCloudNormals
---------------------------------
Constructs a
WCloudNormals
.
.. ocv:function::
CloudNormalsWidget
(InputArray cloud, InputArray normals, int level = 100, float scale = 0.02f, const Color &color = Color::white())
.. ocv:function::
WCloudNormals
(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.
...
...
@@ -920,26 +920,26 @@ Constructs a CloudNormalsWidget.
.. note:: In case there are four channels in the cloud, fourth channel is ignored.
viz::
MeshWidget
----------
-----
.. ocv:class::
MeshWidget
viz::
WMesh
----------
.. ocv:class::
WMesh
This 3D Widget defines a mesh. ::
class CV_EXPORTS
MeshWidget
: public Widget3D
class CV_EXPORTS
WMesh
: public Widget3D
{
public:
MeshWidget
(const Mesh3d &mesh);
WMesh
(const Mesh3d &mesh);
private:
/* hidden */
};
viz::
MeshWidget::MeshWidget
-----------------
----------
Constructs a
MeshWidget
.
viz::
WMesh::WMesh
-----------------
Constructs a
WMesh
.
.. ocv:function::
MeshWidget
(const Mesh3d &mesh)
.. ocv:function::
WMesh
(const Mesh3d &mesh)
:param mesh: :ocv:class:`Mesh3d` object that will be displayed.
...
...
modules/viz/include/opencv2/viz/widgets.hpp
View file @
c31fb8ff
...
...
@@ -134,173 +134,173 @@ namespace cv
void
setColor
(
const
Color
&
color
);
};
class
CV_EXPORTS
LineWidget
:
public
Widget3D
class
CV_EXPORTS
WLine
:
public
Widget3D
{
public
:
LineWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
::
white
());
WLine
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
::
white
());
};
class
CV_EXPORTS
PlaneWidget
:
public
Widget3D
class
CV_EXPORTS
WPlane
:
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
());
WPlane
(
const
Vec4f
&
coefs
,
double
size
=
1.0
,
const
Color
&
color
=
Color
::
white
());
WPlane
(
const
Vec4f
&
coefs
,
const
Point3f
&
pt
,
double
size
=
1.0
,
const
Color
&
color
=
Color
::
white
());
private
:
struct
SetSizeImpl
;
};
class
CV_EXPORTS
SphereWidget
:
public
Widget3D
class
CV_EXPORTS
WSphere
:
public
Widget3D
{
public
:
SphereWidget
(
const
cv
::
Point3f
&
center
,
float
radius
,
int
sphere_resolution
=
10
,
const
Color
&
color
=
Color
::
white
());
WSphere
(
const
cv
::
Point3f
&
center
,
float
radius
,
int
sphere_resolution
=
10
,
const
Color
&
color
=
Color
::
white
());
};
class
CV_EXPORTS
ArrowWidget
:
public
Widget3D
class
CV_EXPORTS
WArrow
:
public
Widget3D
{
public
:
ArrowWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
double
thickness
=
0.03
,
const
Color
&
color
=
Color
::
white
());
WArrow
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
double
thickness
=
0.03
,
const
Color
&
color
=
Color
::
white
());
};
class
CV_EXPORTS
CircleWidget
:
public
Widget3D
class
CV_EXPORTS
WCircle
:
public
Widget3D
{
public
:
CircleWidget
(
const
Point3f
&
pt
,
double
radius
,
double
thickness
=
0.01
,
const
Color
&
color
=
Color
::
white
());
WCircle
(
const
Point3f
&
pt
,
double
radius
,
double
thickness
=
0.01
,
const
Color
&
color
=
Color
::
white
());
};
class
CV_EXPORTS
CylinderWidget
:
public
Widget3D
class
CV_EXPORTS
WCylinder
:
public
Widget3D
{
public
:
CylinderWidget
(
const
Point3f
&
pt_on_axis
,
const
Point3f
&
axis_direction
,
double
radius
,
int
numsides
=
30
,
const
Color
&
color
=
Color
::
white
());
WCylinder
(
const
Point3f
&
pt_on_axis
,
const
Point3f
&
axis_direction
,
double
radius
,
int
numsides
=
30
,
const
Color
&
color
=
Color
::
white
());
};
class
CV_EXPORTS
CubeWidget
:
public
Widget3D
class
CV_EXPORTS
WCube
:
public
Widget3D
{
public
:
CubeWidget
(
const
Point3f
&
pt_min
,
const
Point3f
&
pt_max
,
bool
wire_frame
=
true
,
const
Color
&
color
=
Color
::
white
());
WCube
(
const
Point3f
&
pt_min
,
const
Point3f
&
pt_max
,
bool
wire_frame
=
true
,
const
Color
&
color
=
Color
::
white
());
};
class
CV_EXPORTS
CoordinateSystemWidget
:
public
Widget3D
class
CV_EXPORTS
WCoordinateSystem
:
public
Widget3D
{
public
:
CoordinateSystemWidget
(
double
scale
=
1.0
);
WCoordinateSystem
(
double
scale
=
1.0
);
};
class
CV_EXPORTS
PolyLineWidget
:
public
Widget3D
class
CV_EXPORTS
WPolyLine
:
public
Widget3D
{
public
:
PolyLineWidget
(
InputArray
points
,
const
Color
&
color
=
Color
::
white
());
WPolyLine
(
InputArray
points
,
const
Color
&
color
=
Color
::
white
());
private
:
struct
CopyImpl
;
};
class
CV_EXPORTS
GridWidget
:
public
Widget3D
class
CV_EXPORTS
WGrid
:
public
Widget3D
{
public
:
//! Creates grid at the origin
GridWidget
(
const
Vec2i
&
dimensions
,
const
Vec2d
&
spacing
,
const
Color
&
color
=
Color
::
white
());
WGrid
(
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
());
WGrid
(
const
Vec4f
&
coeffs
,
const
Vec2i
&
dimensions
,
const
Vec2d
&
spacing
,
const
Color
&
color
=
Color
::
white
());
private
:
struct
GridImpl
;
};
class
CV_EXPORTS
Text3DWidget
:
public
Widget3D
class
CV_EXPORTS
WText3D
:
public
Widget3D
{
public
:
Text3DWidget
(
const
String
&
text
,
const
Point3f
&
position
,
double
text_scale
=
1.0
,
bool
face_camera
=
true
,
const
Color
&
color
=
Color
::
white
());
WText3D
(
const
String
&
text
,
const
Point3f
&
position
,
double
text_scale
=
1.0
,
bool
face_camera
=
true
,
const
Color
&
color
=
Color
::
white
());
void
setText
(
const
String
&
text
);
String
getText
()
const
;
};
class
CV_EXPORTS
TextWidge
t
:
public
Widget2D
class
CV_EXPORTS
WTex
t
:
public
Widget2D
{
public
:
TextWidge
t
(
const
String
&
text
,
const
Point2i
&
pos
,
int
font_size
=
10
,
const
Color
&
color
=
Color
::
white
());
WTex
t
(
const
String
&
text
,
const
Point2i
&
pos
,
int
font_size
=
10
,
const
Color
&
color
=
Color
::
white
());
void
setText
(
const
String
&
text
);
String
getText
()
const
;
};
class
CV_EXPORTS
ImageOverlayWidget
:
public
Widget2D
class
CV_EXPORTS
WImageOverlay
:
public
Widget2D
{
public
:
ImageOverlayWidget
(
const
Mat
&
image
,
const
Rect
&
rect
);
WImageOverlay
(
const
Mat
&
image
,
const
Rect
&
rect
);
void
setImage
(
const
Mat
&
image
);
};
class
CV_EXPORTS
Image3DWidget
:
public
Widget3D
class
CV_EXPORTS
WImage3D
:
public
Widget3D
{
public
:
//! Creates 3D image at the origin
Image3DWidget
(
const
Mat
&
image
,
const
Size
&
size
);
WImage3D
(
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
);
WImage3D
(
const
Vec3f
&
position
,
const
Vec3f
&
normal
,
const
Vec3f
&
up_vector
,
const
Mat
&
image
,
const
Size
&
size
);
void
setImage
(
const
Mat
&
image
);
};
class
CV_EXPORTS
CameraPositionWidget
:
public
Widget3D
class
CV_EXPORTS
WCameraPosition
:
public
Widget3D
{
public
:
//! Creates camera coordinate frame (axes) at the origin
CameraPositionWidget
(
double
scale
=
1.0
);
WCameraPosition
(
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
());
WCameraPosition
(
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
());
WCameraPosition
(
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
());
WCameraPosition
(
const
Matx33f
&
K
,
const
Mat
&
img
,
double
scale
=
1.0
,
const
Color
&
color
=
Color
::
white
());
//! Creates frustum and display given image at the far plane
CameraPositionWidget
(
const
Vec2f
&
fov
,
const
Mat
&
img
,
double
scale
=
1.0
,
const
Color
&
color
=
Color
::
white
());
WCameraPosition
(
const
Vec2f
&
fov
,
const
Mat
&
img
,
double
scale
=
1.0
,
const
Color
&
color
=
Color
::
white
());
private
:
struct
ProjectImage
;
};
class
CV_EXPORTS
TrajectoryWidget
:
public
Widget3D
class
CV_EXPORTS
WTrajectory
:
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
);
WTrajectory
(
const
std
::
vector
<
Affine3f
>
&
path
,
int
display_mode
=
WTrajectory
::
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
());
WTrajectory
(
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
());
WTrajectory
(
const
std
::
vector
<
Affine3f
>
&
path
,
const
Vec2f
&
fov
,
double
scale
=
1.0
,
const
Color
&
color
=
Color
::
white
());
private
:
struct
ApplyPath
;
};
class
CV_EXPORTS
SpheresTrajectoryWidget
:
public
Widget3D
class
CV_EXPORTS
WSpheresTrajectory
:
public
Widget3D
{
public
:
SpheresTrajectoryWidget
(
const
std
::
vector
<
Affine3f
>
&
path
,
float
line_length
=
0.05
f
,
double
init_sphere_radius
=
0.021
,
WSpheresTrajectory
(
const
std
::
vector
<
Affine3f
>
&
path
,
float
line_length
=
0.05
f
,
double
init_sphere_radius
=
0.021
,
double
sphere_radius
=
0.007
,
const
Color
&
line_color
=
Color
::
white
(),
const
Color
&
sphere_color
=
Color
::
white
());
};
class
CV_EXPORTS
CloudWidget
:
public
Widget3D
class
CV_EXPORTS
WCloud
:
public
Widget3D
{
public
:
//! Each point in cloud is mapped to a color in colors
CloudWidget
(
InputArray
cloud
,
InputArray
colors
);
WCloud
(
InputArray
cloud
,
InputArray
colors
);
//! All points in cloud have the same color
CloudWidget
(
InputArray
cloud
,
const
Color
&
color
=
Color
::
white
());
WCloud
(
InputArray
cloud
,
const
Color
&
color
=
Color
::
white
());
private
:
struct
CreateCloudWidget
;
};
class
CV_EXPORTS
CloudCollectionWidget
:
public
Widget3D
class
CV_EXPORTS
WCloudCollection
:
public
Widget3D
{
public
:
CloudCollectionWidget
();
WCloudCollection
();
//! Each point in cloud is mapped to a color in colors
void
addCloud
(
InputArray
cloud
,
InputArray
colors
,
const
Affine3f
&
pose
=
Affine3f
::
Identity
());
...
...
@@ -311,19 +311,19 @@ namespace cv
struct
CreateCloudWidget
;
};
class
CV_EXPORTS
CloudNormalsWidget
:
public
Widget3D
class
CV_EXPORTS
WCloudNormals
:
public
Widget3D
{
public
:
CloudNormalsWidget
(
InputArray
cloud
,
InputArray
normals
,
int
level
=
100
,
float
scale
=
0.02
f
,
const
Color
&
color
=
Color
::
white
());
WCloudNormals
(
InputArray
cloud
,
InputArray
normals
,
int
level
=
100
,
float
scale
=
0.02
f
,
const
Color
&
color
=
Color
::
white
());
private
:
struct
ApplyCloudNormals
;
};
class
CV_EXPORTS
MeshWidget
:
public
Widget3D
class
CV_EXPORTS
WMesh
:
public
Widget3D
{
public
:
MeshWidget
(
const
Mesh3d
&
mesh
);
WMesh
(
const
Mesh3d
&
mesh
);
private
:
struct
CopyImpl
;
...
...
@@ -331,27 +331,27 @@ namespace cv
template
<>
CV_EXPORTS
Widget2D
Widget
::
cast
<
Widget2D
>
();
template
<>
CV_EXPORTS
Widget3D
Widget
::
cast
<
Widget3D
>
();
template
<>
CV_EXPORTS
LineWidget
Widget
::
cast
<
LineWidget
>
();
template
<>
CV_EXPORTS
PlaneWidget
Widget
::
cast
<
PlaneWidget
>
();
template
<>
CV_EXPORTS
SphereWidget
Widget
::
cast
<
SphereWidget
>
();
template
<>
CV_EXPORTS
CylinderWidget
Widget
::
cast
<
CylinderWidget
>
();
template
<>
CV_EXPORTS
ArrowWidget
Widget
::
cast
<
ArrowWidget
>
();
template
<>
CV_EXPORTS
CircleWidget
Widget
::
cast
<
CircleWidget
>
();
template
<>
CV_EXPORTS
CubeWidget
Widget
::
cast
<
CubeWidget
>
();
template
<>
CV_EXPORTS
CoordinateSystemWidget
Widget
::
cast
<
CoordinateSystemWidget
>
();
template
<>
CV_EXPORTS
PolyLineWidget
Widget
::
cast
<
PolyLineWidget
>
();
template
<>
CV_EXPORTS
GridWidget
Widget
::
cast
<
GridWidget
>
();
template
<>
CV_EXPORTS
Text3DWidget
Widget
::
cast
<
Text3DWidget
>
();
template
<>
CV_EXPORTS
TextWidget
Widget
::
cast
<
TextWidge
t
>
();
template
<>
CV_EXPORTS
ImageOverlayWidget
Widget
::
cast
<
ImageOverlayWidget
>
();
template
<>
CV_EXPORTS
Image3DWidget
Widget
::
cast
<
Image3DWidget
>
();
template
<>
CV_EXPORTS
CameraPositionWidget
Widget
::
cast
<
CameraPositionWidget
>
();
template
<>
CV_EXPORTS
TrajectoryWidget
Widget
::
cast
<
TrajectoryWidget
>
();
template
<>
CV_EXPORTS
SpheresTrajectoryWidget
Widget
::
cast
<
SpheresTrajectoryWidget
>
();
template
<>
CV_EXPORTS
CloudWidget
Widget
::
cast
<
CloudWidget
>
();
template
<>
CV_EXPORTS
CloudCollectionWidget
Widget
::
cast
<
CloudCollectionWidget
>
();
template
<>
CV_EXPORTS
CloudNormalsWidget
Widget
::
cast
<
CloudNormalsWidget
>
();
template
<>
CV_EXPORTS
MeshWidget
Widget
::
cast
<
MeshWidget
>
();
template
<>
CV_EXPORTS
WLine
Widget
::
cast
<
WLine
>
();
template
<>
CV_EXPORTS
WPlane
Widget
::
cast
<
WPlane
>
();
template
<>
CV_EXPORTS
WSphere
Widget
::
cast
<
WSphere
>
();
template
<>
CV_EXPORTS
WCylinder
Widget
::
cast
<
WCylinder
>
();
template
<>
CV_EXPORTS
WArrow
Widget
::
cast
<
WArrow
>
();
template
<>
CV_EXPORTS
WCircle
Widget
::
cast
<
WCircle
>
();
template
<>
CV_EXPORTS
WCube
Widget
::
cast
<
WCube
>
();
template
<>
CV_EXPORTS
WCoordinateSystem
Widget
::
cast
<
WCoordinateSystem
>
();
template
<>
CV_EXPORTS
WPolyLine
Widget
::
cast
<
WPolyLine
>
();
template
<>
CV_EXPORTS
WGrid
Widget
::
cast
<
WGrid
>
();
template
<>
CV_EXPORTS
WText3D
Widget
::
cast
<
WText3D
>
();
template
<>
CV_EXPORTS
WText
Widget
::
cast
<
WTex
t
>
();
template
<>
CV_EXPORTS
WImageOverlay
Widget
::
cast
<
WImageOverlay
>
();
template
<>
CV_EXPORTS
WImage3D
Widget
::
cast
<
WImage3D
>
();
template
<>
CV_EXPORTS
WCameraPosition
Widget
::
cast
<
WCameraPosition
>
();
template
<>
CV_EXPORTS
WTrajectory
Widget
::
cast
<
WTrajectory
>
();
template
<>
CV_EXPORTS
WSpheresTrajectory
Widget
::
cast
<
WSpheresTrajectory
>
();
template
<>
CV_EXPORTS
WCloud
Widget
::
cast
<
WCloud
>
();
template
<>
CV_EXPORTS
WCloudCollection
Widget
::
cast
<
WCloudCollection
>
();
template
<>
CV_EXPORTS
WCloudNormals
Widget
::
cast
<
WCloudNormals
>
();
template
<>
CV_EXPORTS
WMesh
Widget
::
cast
<
WMesh
>
();
}
/* namespace viz */
}
/* namespace cv */
...
...
modules/viz/src/cloud_widgets.cpp
View file @
c31fb8ff
...
...
@@ -59,7 +59,7 @@ namespace cv
///////////////////////////////////////////////////////////////////////////////////////////////
/// Point Cloud Widget implementation
struct
cv
::
viz
::
CloudWidget
::
CreateCloudWidget
struct
cv
::
viz
::
WCloud
::
CreateCloudWidget
{
static
inline
vtkSmartPointer
<
vtkPolyData
>
create
(
const
Mat
&
cloud
,
vtkIdType
&
nr_points
)
{
...
...
@@ -146,7 +146,7 @@ struct cv::viz::CloudWidget::CreateCloudWidget
}
};
cv
::
viz
::
CloudWidget
::
CloudWidget
(
InputArray
_cloud
,
InputArray
_colors
)
cv
::
viz
::
WCloud
::
WCloud
(
InputArray
_cloud
,
InputArray
_colors
)
{
Mat
cloud
=
_cloud
.
getMat
();
Mat
colors
=
_colors
.
getMat
();
...
...
@@ -201,7 +201,7 @@ cv::viz::CloudWidget::CloudWidget(InputArray _cloud, InputArray _colors)
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
cv
::
viz
::
CloudWidget
::
CloudWidget
(
InputArray
_cloud
,
const
Color
&
color
)
cv
::
viz
::
WCloud
::
WCloud
(
InputArray
_cloud
,
const
Color
&
color
)
{
Mat
cloud
=
_cloud
.
getMat
();
CV_Assert
(
cloud
.
type
()
==
CV_32FC3
||
cloud
.
type
()
==
CV_64FC3
||
cloud
.
type
()
==
CV_32FC4
||
cloud
.
type
()
==
CV_64FC4
);
...
...
@@ -233,16 +233,16 @@ cv::viz::CloudWidget::CloudWidget(InputArray _cloud, const Color &color)
setColor
(
color
);
}
template
<>
cv
::
viz
::
CloudWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CloudWidget
>
()
template
<>
cv
::
viz
::
WCloud
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCloud
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CloudWidget
&>
(
widget
);
return
static_cast
<
WCloud
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// Cloud Collection Widget implementation
struct
cv
::
viz
::
CloudCollectionWidget
::
CreateCloudWidget
struct
cv
::
viz
::
WCloudCollection
::
CreateCloudWidget
{
static
inline
vtkSmartPointer
<
vtkPolyData
>
create
(
const
Mat
&
cloud
,
vtkIdType
&
nr_points
)
{
...
...
@@ -376,14 +376,14 @@ struct cv::viz::CloudCollectionWidget::CreateCloudWidget
}
};
cv
::
viz
::
CloudCollectionWidget
::
CloudCollectionWidget
()
cv
::
viz
::
WCloudCollection
::
WCloudCollection
()
{
// Just create the actor
vtkSmartPointer
<
vtkLODActor
>
actor
=
vtkSmartPointer
<
vtkLODActor
>::
New
();
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
void
cv
::
viz
::
CloudCollectionWidget
::
addCloud
(
InputArray
_cloud
,
InputArray
_colors
,
const
Affine3f
&
pose
)
void
cv
::
viz
::
WCloudCollection
::
addCloud
(
InputArray
_cloud
,
InputArray
_colors
,
const
Affine3f
&
pose
)
{
Mat
cloud
=
_cloud
.
getMat
();
Mat
colors
=
_colors
.
getMat
();
...
...
@@ -432,7 +432,7 @@ void cv::viz::CloudCollectionWidget::addCloud(InputArray _cloud, InputArray _col
CreateCloudWidget
::
createMapper
(
actor
,
transform_filter
->
GetOutput
(),
minmax
);
}
void
cv
::
viz
::
CloudCollectionWidget
::
addCloud
(
InputArray
_cloud
,
const
Color
&
color
,
const
Affine3f
&
pose
)
void
cv
::
viz
::
WCloudCollection
::
addCloud
(
InputArray
_cloud
,
const
Color
&
color
,
const
Affine3f
&
pose
)
{
Mat
cloud
=
_cloud
.
getMat
();
CV_Assert
(
cloud
.
type
()
==
CV_32FC3
||
cloud
.
type
()
==
CV_64FC3
||
cloud
.
type
()
==
CV_32FC4
||
cloud
.
type
()
==
CV_64FC4
);
...
...
@@ -471,16 +471,16 @@ void cv::viz::CloudCollectionWidget::addCloud(InputArray _cloud, const Color &co
CreateCloudWidget
::
createMapper
(
actor
,
transform_filter
->
GetOutput
(),
minmax
);
}
template
<>
cv
::
viz
::
CloudCollectionWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CloudCollectionWidget
>
()
template
<>
cv
::
viz
::
WCloudCollection
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCloudCollection
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CloudCollectionWidget
&>
(
widget
);
return
static_cast
<
WCloudCollection
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// Cloud Normals Widget implementation
struct
cv
::
viz
::
CloudNormalsWidget
::
ApplyCloudNormals
struct
cv
::
viz
::
WCloudNormals
::
ApplyCloudNormals
{
template
<
typename
_Tp
>
struct
Impl
...
...
@@ -555,7 +555,7 @@ struct cv::viz::CloudNormalsWidget::ApplyCloudNormals
}
};
cv
::
viz
::
CloudNormalsWidget
::
CloudNormalsWidget
(
InputArray
_cloud
,
InputArray
_normals
,
int
level
,
float
scale
,
const
Color
&
color
)
cv
::
viz
::
WCloudNormals
::
WCloudNormals
(
InputArray
_cloud
,
InputArray
_normals
,
int
level
,
float
scale
,
const
Color
&
color
)
{
Mat
cloud
=
_cloud
.
getMat
();
Mat
normals
=
_normals
.
getMat
();
...
...
@@ -610,16 +610,16 @@ cv::viz::CloudNormalsWidget::CloudNormalsWidget(InputArray _cloud, InputArray _n
setColor
(
color
);
}
template
<>
cv
::
viz
::
CloudNormalsWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CloudNormalsWidget
>
()
template
<>
cv
::
viz
::
WCloudNormals
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCloudNormals
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CloudNormalsWidget
&>
(
widget
);
return
static_cast
<
WCloudNormals
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// Mesh Widget implementation
struct
cv
::
viz
::
MeshWidget
::
CopyImpl
struct
cv
::
viz
::
WMesh
::
CopyImpl
{
template
<
typename
_Tp
>
static
Vec
<
_Tp
,
3
>
*
copy
(
const
Mat
&
source
,
Vec
<
_Tp
,
3
>
*
output
,
int
*
look_up
,
const
Mat
&
nan_mask
)
...
...
@@ -648,7 +648,7 @@ struct cv::viz::MeshWidget::CopyImpl
}
};
cv
::
viz
::
MeshWidget
::
MeshWidget
(
const
Mesh3d
&
mesh
)
cv
::
viz
::
WMesh
::
WMesh
(
const
Mesh3d
&
mesh
)
{
CV_Assert
(
mesh
.
cloud
.
rows
==
1
&&
(
mesh
.
cloud
.
type
()
==
CV_32FC3
||
mesh
.
cloud
.
type
()
==
CV_64FC3
||
mesh
.
cloud
.
type
()
==
CV_32FC4
||
mesh
.
cloud
.
type
()
==
CV_64FC4
));
CV_Assert
(
mesh
.
colors
.
empty
()
||
(
mesh
.
colors
.
type
()
==
CV_8UC3
&&
mesh
.
cloud
.
size
()
==
mesh
.
colors
.
size
()));
...
...
@@ -766,8 +766,8 @@ cv::viz::MeshWidget::MeshWidget(const Mesh3d &mesh)
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
template
<>
CV_EXPORTS
cv
::
viz
::
MeshWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
MeshWidget
>
()
template
<>
CV_EXPORTS
cv
::
viz
::
WMesh
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WMesh
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
MeshWidget
&>
(
widget
);
return
static_cast
<
WMesh
&>
(
widget
);
}
modules/viz/src/shape_widgets.cpp
View file @
c31fb8ff
...
...
@@ -58,7 +58,7 @@ namespace cv
///////////////////////////////////////////////////////////////////////////////////////////////
/// line widget implementation
cv
::
viz
::
LineWidget
::
LineWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
)
cv
::
viz
::
WLine
::
WLine
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkLineSource
>
line
=
vtkSmartPointer
<
vtkLineSource
>::
New
();
line
->
SetPoint1
(
pt1
.
x
,
pt1
.
y
,
pt1
.
z
);
...
...
@@ -75,16 +75,16 @@ cv::viz::LineWidget::LineWidget(const Point3f &pt1, const Point3f &pt2, const Co
setColor
(
color
);
}
template
<>
cv
::
viz
::
LineWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
LineWidget
>
()
template
<>
cv
::
viz
::
WLine
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WLine
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
LineWidget
&>
(
widget
);
return
static_cast
<
WLine
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// plane widget implementation
struct
cv
::
viz
::
PlaneWidget
::
SetSizeImpl
struct
cv
::
viz
::
WPlane
::
SetSizeImpl
{
template
<
typename
_Tp
>
static
vtkSmartPointer
<
vtkTransformPolyDataFilter
>
setSize
(
const
Vec
<
_Tp
,
3
>
&
center
,
vtkSmartPointer
<
vtkAlgorithmOutput
>
poly_data_port
,
double
size
)
...
...
@@ -104,7 +104,7 @@ struct cv::viz::PlaneWidget::SetSizeImpl
}
};
cv
::
viz
::
PlaneWidget
::
PlaneWidget
(
const
Vec4f
&
coefs
,
double
size
,
const
Color
&
color
)
cv
::
viz
::
WPlane
::
WPlane
(
const
Vec4f
&
coefs
,
double
size
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkPlaneSource
>
plane
=
vtkSmartPointer
<
vtkPlaneSource
>::
New
();
plane
->
SetNormal
(
coefs
[
0
],
coefs
[
1
],
coefs
[
2
]);
...
...
@@ -124,7 +124,7 @@ cv::viz::PlaneWidget::PlaneWidget(const Vec4f& coefs, double size, const Color &
setColor
(
color
);
}
cv
::
viz
::
PlaneWidget
::
PlaneWidget
(
const
Vec4f
&
coefs
,
const
Point3f
&
pt
,
double
size
,
const
Color
&
color
)
cv
::
viz
::
WPlane
::
WPlane
(
const
Vec4f
&
coefs
,
const
Point3f
&
pt
,
double
size
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkPlaneSource
>
plane
=
vtkSmartPointer
<
vtkPlaneSource
>::
New
();
Point3f
coefs3
(
coefs
[
0
],
coefs
[
1
],
coefs
[
2
]);
...
...
@@ -145,16 +145,16 @@ cv::viz::PlaneWidget::PlaneWidget(const Vec4f& coefs, const Point3f& pt, double
setColor
(
color
);
}
template
<>
cv
::
viz
::
PlaneWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
PlaneWidget
>
()
template
<>
cv
::
viz
::
WPlane
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WPlane
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
PlaneWidget
&>
(
widget
);
return
static_cast
<
WPlane
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// sphere widget implementation
cv
::
viz
::
SphereWidget
::
SphereWidget
(
const
Point3f
&
center
,
float
radius
,
int
sphere_resolution
,
const
Color
&
color
)
cv
::
viz
::
WSphere
::
WSphere
(
const
Point3f
&
center
,
float
radius
,
int
sphere_resolution
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkSphereSource
>
sphere
=
vtkSmartPointer
<
vtkSphereSource
>::
New
();
sphere
->
SetRadius
(
radius
);
...
...
@@ -174,16 +174,16 @@ cv::viz::SphereWidget::SphereWidget(const Point3f ¢er, float radius, int sph
setColor
(
color
);
}
template
<>
cv
::
viz
::
SphereWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
SphereWidget
>
()
template
<>
cv
::
viz
::
WSphere
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WSphere
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
SphereWidget
&>
(
widget
);
return
static_cast
<
WSphere
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// arrow widget implementation
cv
::
viz
::
ArrowWidget
::
ArrowWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
double
thickness
,
const
Color
&
color
)
cv
::
viz
::
WArrow
::
WArrow
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
double
thickness
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkArrowSource
>
arrowSource
=
vtkSmartPointer
<
vtkArrowSource
>::
New
();
arrowSource
->
SetShaftRadius
(
thickness
);
...
...
@@ -247,16 +247,16 @@ cv::viz::ArrowWidget::ArrowWidget(const Point3f& pt1, const Point3f& pt2, double
setColor
(
color
);
}
template
<>
cv
::
viz
::
ArrowWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
ArrowWidget
>
()
template
<>
cv
::
viz
::
WArrow
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WArrow
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
ArrowWidget
&>
(
widget
);
return
static_cast
<
WArrow
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// circle widget implementation
cv
::
viz
::
CircleWidget
::
CircleWidget
(
const
Point3f
&
pt
,
double
radius
,
double
thickness
,
const
Color
&
color
)
cv
::
viz
::
WCircle
::
WCircle
(
const
Point3f
&
pt
,
double
radius
,
double
thickness
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkDiskSource
>
disk
=
vtkSmartPointer
<
vtkDiskSource
>::
New
();
// Maybe the resolution should be lower e.g. 50 or 25
...
...
@@ -283,16 +283,16 @@ cv::viz::CircleWidget::CircleWidget(const Point3f& pt, double radius, double thi
setColor
(
color
);
}
template
<>
cv
::
viz
::
CircleWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CircleWidget
>
()
template
<>
cv
::
viz
::
WCircle
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCircle
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CircleWidget
&>
(
widget
);
return
static_cast
<
WCircle
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// cylinder widget implementation
cv
::
viz
::
CylinderWidget
::
CylinderWidget
(
const
Point3f
&
pt_on_axis
,
const
Point3f
&
axis_direction
,
double
radius
,
int
numsides
,
const
Color
&
color
)
cv
::
viz
::
WCylinder
::
WCylinder
(
const
Point3f
&
pt_on_axis
,
const
Point3f
&
axis_direction
,
double
radius
,
int
numsides
,
const
Color
&
color
)
{
const
Point3f
pt2
=
pt_on_axis
+
axis_direction
;
vtkSmartPointer
<
vtkLineSource
>
line
=
vtkSmartPointer
<
vtkLineSource
>::
New
();
...
...
@@ -314,16 +314,16 @@ cv::viz::CylinderWidget::CylinderWidget(const Point3f& pt_on_axis, const Point3f
setColor
(
color
);
}
template
<>
cv
::
viz
::
CylinderWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CylinderWidget
>
()
template
<>
cv
::
viz
::
WCylinder
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCylinder
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CylinderWidget
&>
(
widget
);
return
static_cast
<
WCylinder
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// cylinder widget implementation
cv
::
viz
::
CubeWidget
::
CubeWidget
(
const
Point3f
&
pt_min
,
const
Point3f
&
pt_max
,
bool
wire_frame
,
const
Color
&
color
)
cv
::
viz
::
WCube
::
WCube
(
const
Point3f
&
pt_min
,
const
Point3f
&
pt_max
,
bool
wire_frame
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkDataSetMapper
>
mapper
=
vtkSmartPointer
<
vtkDataSetMapper
>::
New
();
if
(
wire_frame
)
...
...
@@ -346,16 +346,16 @@ cv::viz::CubeWidget::CubeWidget(const Point3f& pt_min, const Point3f& pt_max, bo
setColor
(
color
);
}
template
<>
cv
::
viz
::
CubeWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CubeWidget
>
()
template
<>
cv
::
viz
::
WCube
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCube
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CubeWidget
&>
(
widget
);
return
static_cast
<
WCube
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// coordinate system widget implementation
cv
::
viz
::
CoordinateSystemWidget
::
CoordinateSystemWidget
(
double
scale
)
cv
::
viz
::
WCoordinateSystem
::
WCoordinateSystem
(
double
scale
)
{
vtkSmartPointer
<
vtkAxes
>
axes
=
vtkSmartPointer
<
vtkAxes
>::
New
();
axes
->
SetOrigin
(
0
,
0
,
0
);
...
...
@@ -397,16 +397,16 @@ cv::viz::CoordinateSystemWidget::CoordinateSystemWidget(double scale)
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
template
<>
cv
::
viz
::
CoordinateSystemWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CoordinateSystemWidget
>
()
template
<>
cv
::
viz
::
WCoordinateSystem
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCoordinateSystem
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CoordinateSystemWidget
&>
(
widget
);
return
static_cast
<
WCoordinateSystem
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// polyline widget implementation
struct
cv
::
viz
::
PolyLineWidget
::
CopyImpl
struct
cv
::
viz
::
WPolyLine
::
CopyImpl
{
template
<
typename
_Tp
>
static
void
copy
(
const
Mat
&
source
,
Vec
<
_Tp
,
3
>
*
output
,
vtkSmartPointer
<
vtkPolyLine
>
polyLine
)
...
...
@@ -426,7 +426,7 @@ struct cv::viz::PolyLineWidget::CopyImpl
}
};
cv
::
viz
::
PolyLineWidget
::
PolyLineWidget
(
InputArray
_pointData
,
const
Color
&
color
)
cv
::
viz
::
WPolyLine
::
WPolyLine
(
InputArray
_pointData
,
const
Color
&
color
)
{
Mat
pointData
=
_pointData
.
getMat
();
CV_Assert
(
pointData
.
type
()
==
CV_32FC3
||
pointData
.
type
()
==
CV_32FC4
||
pointData
.
type
()
==
CV_64FC3
||
pointData
.
type
()
==
CV_64FC4
);
...
...
@@ -477,16 +477,16 @@ cv::viz::PolyLineWidget::PolyLineWidget(InputArray _pointData, const Color &colo
setColor
(
color
);
}
template
<>
cv
::
viz
::
PolyLineWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
PolyLineWidget
>
()
template
<>
cv
::
viz
::
WPolyLine
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WPolyLine
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
PolyLineWidget
&>
(
widget
);
return
static_cast
<
WPolyLine
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// grid widget implementation
struct
cv
::
viz
::
GridWidget
::
GridImpl
struct
cv
::
viz
::
WGrid
::
GridImpl
{
static
vtkSmartPointer
<
vtkPolyData
>
createGrid
(
const
Vec2i
&
dimensions
,
const
Vec2d
&
spacing
)
{
...
...
@@ -513,7 +513,7 @@ struct cv::viz::GridWidget::GridImpl
}
};
cv
::
viz
::
GridWidget
::
GridWidget
(
const
Vec2i
&
dimensions
,
const
Vec2d
&
spacing
,
const
Color
&
color
)
cv
::
viz
::
WGrid
::
WGrid
(
const
Vec2i
&
dimensions
,
const
Vec2d
&
spacing
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkPolyData
>
grid
=
GridImpl
::
createGrid
(
dimensions
,
spacing
);
...
...
@@ -531,7 +531,7 @@ cv::viz::GridWidget::GridWidget(const Vec2i &dimensions, const Vec2d &spacing, c
setColor
(
color
);
}
cv
::
viz
::
GridWidget
::
GridWidget
(
const
Vec4f
&
coefs
,
const
Vec2i
&
dimensions
,
const
Vec2d
&
spacing
,
const
Color
&
color
)
cv
::
viz
::
WGrid
::
WGrid
(
const
Vec4f
&
coefs
,
const
Vec2i
&
dimensions
,
const
Vec2d
&
spacing
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkPolyData
>
grid
=
GridImpl
::
createGrid
(
dimensions
,
spacing
);
...
...
@@ -584,16 +584,16 @@ cv::viz::GridWidget::GridWidget(const Vec4f &coefs, const Vec2i &dimensions, con
setColor
(
color
);
}
template
<>
cv
::
viz
::
GridWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
GridWidget
>
()
template
<>
cv
::
viz
::
WGrid
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WGrid
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
GridWidget
&>
(
widget
);
return
static_cast
<
WGrid
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// text3D widget implementation
cv
::
viz
::
Text3DWidget
::
Text3DWidget
(
const
String
&
text
,
const
Point3f
&
position
,
double
text_scale
,
bool
face_camera
,
const
Color
&
color
)
cv
::
viz
::
WText3D
::
WText3D
(
const
String
&
text
,
const
Point3f
&
position
,
double
text_scale
,
bool
face_camera
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkVectorText
>
textSource
=
vtkSmartPointer
<
vtkVectorText
>::
New
();
textSource
->
SetText
(
text
.
c_str
());
...
...
@@ -622,7 +622,7 @@ cv::viz::Text3DWidget::Text3DWidget(const String &text, const Point3f &position,
setColor
(
color
);
}
void
cv
::
viz
::
Text3DWidget
::
setText
(
const
String
&
text
)
void
cv
::
viz
::
WText3D
::
setText
(
const
String
&
text
)
{
vtkFollower
*
actor
=
vtkFollower
::
SafeDownCast
(
WidgetAccessor
::
getProp
(
*
this
));
CV_Assert
(
"This widget does not support text."
&&
actor
);
...
...
@@ -636,7 +636,7 @@ void cv::viz::Text3DWidget::setText(const String &text)
textSource
->
Update
();
}
cv
::
String
cv
::
viz
::
Text3DWidget
::
getText
()
const
cv
::
String
cv
::
viz
::
WText3D
::
getText
()
const
{
vtkFollower
*
actor
=
vtkFollower
::
SafeDownCast
(
WidgetAccessor
::
getProp
(
*
this
));
CV_Assert
(
"This widget does not support text."
&&
actor
);
...
...
@@ -648,16 +648,16 @@ cv::String cv::viz::Text3DWidget::getText() const
return
textSource
->
GetText
();
}
template
<>
cv
::
viz
::
Text3DWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
Text3DWidget
>
()
template
<>
cv
::
viz
::
WText3D
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WText3D
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
Text3DWidget
&>
(
widget
);
return
static_cast
<
WText3D
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// text widget implementation
cv
::
viz
::
TextWidget
::
TextWidge
t
(
const
String
&
text
,
const
Point2i
&
pos
,
int
font_size
,
const
Color
&
color
)
cv
::
viz
::
WText
::
WTex
t
(
const
String
&
text
,
const
Point2i
&
pos
,
int
font_size
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkTextActor
>
actor
=
vtkSmartPointer
<
vtkTextActor
>::
New
();
actor
->
SetPosition
(
pos
.
x
,
pos
.
y
);
...
...
@@ -675,20 +675,20 @@ cv::viz::TextWidget::TextWidget(const String &text, const Point2i &pos, int font
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
template
<>
cv
::
viz
::
TextWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
TextWidge
t
>
()
template
<>
cv
::
viz
::
WText
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WTex
t
>
()
{
Widget2D
widget
=
this
->
cast
<
Widget2D
>
();
return
static_cast
<
TextWidge
t
&>
(
widget
);
return
static_cast
<
WTex
t
&>
(
widget
);
}
void
cv
::
viz
::
TextWidge
t
::
setText
(
const
String
&
text
)
void
cv
::
viz
::
WTex
t
::
setText
(
const
String
&
text
)
{
vtkTextActor
*
actor
=
vtkTextActor
::
SafeDownCast
(
WidgetAccessor
::
getProp
(
*
this
));
CV_Assert
(
"This widget does not support text."
&&
actor
);
actor
->
SetInput
(
text
.
c_str
());
}
cv
::
String
cv
::
viz
::
TextWidge
t
::
getText
()
const
cv
::
String
cv
::
viz
::
WTex
t
::
getText
()
const
{
vtkTextActor
*
actor
=
vtkTextActor
::
SafeDownCast
(
WidgetAccessor
::
getProp
(
*
this
));
CV_Assert
(
"This widget does not support text."
&&
actor
);
...
...
@@ -698,7 +698,7 @@ cv::String cv::viz::TextWidget::getText() const
///////////////////////////////////////////////////////////////////////////////////////////////
/// image overlay widget implementation
cv
::
viz
::
ImageOverlayWidget
::
ImageOverlayWidget
(
const
Mat
&
image
,
const
Rect
&
rect
)
cv
::
viz
::
WImageOverlay
::
WImageOverlay
(
const
Mat
&
image
,
const
Rect
&
rect
)
{
CV_Assert
(
!
image
.
empty
()
&&
image
.
depth
()
==
CV_8U
);
...
...
@@ -739,7 +739,7 @@ cv::viz::ImageOverlayWidget::ImageOverlayWidget(const Mat &image, const Rect &re
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
void
cv
::
viz
::
ImageOverlayWidget
::
setImage
(
const
Mat
&
image
)
void
cv
::
viz
::
WImageOverlay
::
setImage
(
const
Mat
&
image
)
{
CV_Assert
(
!
image
.
empty
()
&&
image
.
depth
()
==
CV_8U
);
...
...
@@ -766,16 +766,16 @@ void cv::viz::ImageOverlayWidget::setImage(const Mat &image)
mapper
->
SetInputConnection
(
flipFilter
->
GetOutputPort
());
}
template
<>
cv
::
viz
::
ImageOverlayWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
ImageOverlayWidget
>
()
template
<>
cv
::
viz
::
WImageOverlay
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WImageOverlay
>
()
{
Widget2D
widget
=
this
->
cast
<
Widget2D
>
();
return
static_cast
<
ImageOverlayWidget
&>
(
widget
);
return
static_cast
<
WImageOverlay
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// image 3D widget implementation
cv
::
viz
::
Image3DWidget
::
Image3DWidget
(
const
Mat
&
image
,
const
Size
&
size
)
cv
::
viz
::
WImage3D
::
WImage3D
(
const
Mat
&
image
,
const
Size
&
size
)
{
CV_Assert
(
!
image
.
empty
()
&&
image
.
depth
()
==
CV_8U
);
...
...
@@ -827,7 +827,7 @@ cv::viz::Image3DWidget::Image3DWidget(const Mat &image, const Size &size)
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
cv
::
viz
::
Image3DWidget
::
Image3DWidget
(
const
Vec3f
&
position
,
const
Vec3f
&
normal
,
const
Vec3f
&
up_vector
,
const
Mat
&
image
,
const
Size
&
size
)
cv
::
viz
::
WImage3D
::
WImage3D
(
const
Vec3f
&
position
,
const
Vec3f
&
normal
,
const
Vec3f
&
up_vector
,
const
Mat
&
image
,
const
Size
&
size
)
{
CV_Assert
(
!
image
.
empty
()
&&
image
.
depth
()
==
CV_8U
);
...
...
@@ -901,7 +901,7 @@ cv::viz::Image3DWidget::Image3DWidget(const Vec3f &position, const Vec3f &normal
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
void
cv
::
viz
::
Image3DWidget
::
setImage
(
const
Mat
&
image
)
void
cv
::
viz
::
WImage3D
::
setImage
(
const
Mat
&
image
)
{
CV_Assert
(
!
image
.
empty
()
&&
image
.
depth
()
==
CV_8U
);
...
...
@@ -929,16 +929,16 @@ void cv::viz::Image3DWidget::setImage(const Mat &image)
actor
->
SetTexture
(
texture
);
}
template
<>
cv
::
viz
::
Image3DWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
Image3DWidget
>
()
template
<>
cv
::
viz
::
WImage3D
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WImage3D
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
Image3DWidget
&>
(
widget
);
return
static_cast
<
WImage3D
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// camera position widget implementation
struct
cv
::
viz
::
CameraPositionWidget
::
ProjectImage
struct
cv
::
viz
::
WCameraPosition
::
ProjectImage
{
static
void
projectImage
(
float
fovy
,
float
far_end_height
,
const
Mat
&
image
,
double
scale
,
const
Color
&
color
,
vtkSmartPointer
<
vtkActor
>
actor
)
...
...
@@ -1032,7 +1032,7 @@ struct cv::viz::CameraPositionWidget::ProjectImage
}
};
cv
::
viz
::
CameraPositionWidget
::
CameraPositionWidget
(
double
scale
)
cv
::
viz
::
WCameraPosition
::
WCameraPosition
(
double
scale
)
{
vtkSmartPointer
<
vtkAxes
>
axes
=
vtkSmartPointer
<
vtkAxes
>::
New
();
axes
->
SetOrigin
(
0
,
0
,
0
);
...
...
@@ -1074,7 +1074,7 @@ cv::viz::CameraPositionWidget::CameraPositionWidget(double scale)
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
cv
::
viz
::
CameraPositionWidget
::
CameraPositionWidget
(
const
Matx33f
&
K
,
double
scale
,
const
Color
&
color
)
cv
::
viz
::
WCameraPosition
::
WCameraPosition
(
const
Matx33f
&
K
,
double
scale
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkCamera
>
camera
=
vtkSmartPointer
<
vtkCamera
>::
New
();
float
f_x
=
K
(
0
,
0
);
...
...
@@ -1116,7 +1116,7 @@ cv::viz::CameraPositionWidget::CameraPositionWidget(const Matx33f &K, double sca
}
cv
::
viz
::
CameraPositionWidget
::
CameraPositionWidget
(
const
Vec2f
&
fov
,
double
scale
,
const
Color
&
color
)
cv
::
viz
::
WCameraPosition
::
WCameraPosition
(
const
Vec2f
&
fov
,
double
scale
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkCamera
>
camera
=
vtkSmartPointer
<
vtkCamera
>::
New
();
...
...
@@ -1154,7 +1154,7 @@ cv::viz::CameraPositionWidget::CameraPositionWidget(const Vec2f &fov, double sca
setColor
(
color
);
}
cv
::
viz
::
CameraPositionWidget
::
CameraPositionWidget
(
const
Matx33f
&
K
,
const
Mat
&
image
,
double
scale
,
const
Color
&
color
)
cv
::
viz
::
WCameraPosition
::
WCameraPosition
(
const
Matx33f
&
K
,
const
Mat
&
image
,
double
scale
,
const
Color
&
color
)
{
CV_Assert
(
!
image
.
empty
()
&&
image
.
depth
()
==
CV_8U
);
float
f_y
=
K
(
1
,
1
);
...
...
@@ -1168,7 +1168,7 @@ cv::viz::CameraPositionWidget::CameraPositionWidget(const Matx33f &K, const Mat
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
cv
::
viz
::
CameraPositionWidget
::
CameraPositionWidget
(
const
Vec2f
&
fov
,
const
Mat
&
image
,
double
scale
,
const
Color
&
color
)
cv
::
viz
::
WCameraPosition
::
WCameraPosition
(
const
Vec2f
&
fov
,
const
Mat
&
image
,
double
scale
,
const
Color
&
color
)
{
CV_Assert
(
!
image
.
empty
()
&&
image
.
depth
()
==
CV_8U
);
float
fovy
=
fov
[
1
]
*
180.0
f
/
CV_PI
;
...
...
@@ -1179,16 +1179,16 @@ cv::viz::CameraPositionWidget::CameraPositionWidget(const Vec2f &fov, const Mat
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
template
<>
cv
::
viz
::
CameraPositionWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
CameraPositionWidget
>
()
template
<>
cv
::
viz
::
WCameraPosition
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WCameraPosition
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
CameraPositionWidget
&>
(
widget
);
return
static_cast
<
WCameraPosition
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// trajectory widget implementation
struct
cv
::
viz
::
TrajectoryWidget
::
ApplyPath
struct
cv
::
viz
::
WTrajectory
::
ApplyPath
{
static
void
applyPath
(
vtkSmartPointer
<
vtkPolyData
>
poly_data
,
vtkSmartPointer
<
vtkAppendPolyData
>
append_filter
,
const
std
::
vector
<
Affine3f
>
&
path
)
{
...
...
@@ -1220,12 +1220,12 @@ struct cv::viz::TrajectoryWidget::ApplyPath
}
};
cv
::
viz
::
TrajectoryWidget
::
TrajectoryWidget
(
const
std
::
vector
<
Affine3f
>
&
path
,
int
display_mode
,
const
Color
&
color
,
double
scale
)
cv
::
viz
::
WTrajectory
::
WTrajectory
(
const
std
::
vector
<
Affine3f
>
&
path
,
int
display_mode
,
const
Color
&
color
,
double
scale
)
{
vtkSmartPointer
<
vtkAppendPolyData
>
appendFilter
=
vtkSmartPointer
<
vtkAppendPolyData
>::
New
();
// Bitwise and with 3 in order to limit the domain to 2 bits
if
((
~
display_mode
&
3
)
^
TrajectoryWidget
::
DISPLAY_PATH
)
if
((
~
display_mode
&
3
)
^
WTrajectory
::
DISPLAY_PATH
)
{
// Create a poly line along the path
vtkIdType
nr_points
=
path
.
size
();
...
...
@@ -1269,7 +1269,7 @@ cv::viz::TrajectoryWidget::TrajectoryWidget(const std::vector<Affine3f> &path, i
#endif
}
if
((
~
display_mode
&
3
)
^
TrajectoryWidget
::
DISPLAY_FRAMES
)
if
((
~
display_mode
&
3
)
^
WTrajectory
::
DISPLAY_FRAMES
)
{
// Create frames and transform along the path
vtkSmartPointer
<
vtkAxes
>
axes
=
vtkSmartPointer
<
vtkAxes
>::
New
();
...
...
@@ -1316,7 +1316,7 @@ cv::viz::TrajectoryWidget::TrajectoryWidget(const std::vector<Affine3f> &path, i
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
cv
::
viz
::
TrajectoryWidget
::
TrajectoryWidget
(
const
std
::
vector
<
Affine3f
>
&
path
,
const
Matx33f
&
K
,
double
scale
,
const
Color
&
color
)
cv
::
viz
::
WTrajectory
::
WTrajectory
(
const
std
::
vector
<
Affine3f
>
&
path
,
const
Matx33f
&
K
,
double
scale
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkCamera
>
camera
=
vtkSmartPointer
<
vtkCamera
>::
New
();
float
f_x
=
K
(
0
,
0
);
...
...
@@ -1360,7 +1360,7 @@ cv::viz::TrajectoryWidget::TrajectoryWidget(const std::vector<Affine3f> &path, c
setColor
(
color
);
}
cv
::
viz
::
TrajectoryWidget
::
TrajectoryWidget
(
const
std
::
vector
<
Affine3f
>
&
path
,
const
Vec2f
&
fov
,
double
scale
,
const
Color
&
color
)
cv
::
viz
::
WTrajectory
::
WTrajectory
(
const
std
::
vector
<
Affine3f
>
&
path
,
const
Vec2f
&
fov
,
double
scale
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkCamera
>
camera
=
vtkSmartPointer
<
vtkCamera
>::
New
();
...
...
@@ -1400,16 +1400,16 @@ cv::viz::TrajectoryWidget::TrajectoryWidget(const std::vector<Affine3f> &path, c
setColor
(
color
);
}
template
<>
cv
::
viz
::
TrajectoryWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
TrajectoryWidget
>
()
template
<>
cv
::
viz
::
WTrajectory
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WTrajectory
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
TrajectoryWidget
&>
(
widget
);
return
static_cast
<
WTrajectory
&>
(
widget
);
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// spheres trajectory widget implementation
cv
::
viz
::
SpheresTrajectoryWidget
::
SpheresTrajectoryWidget
(
const
std
::
vector
<
Affine3f
>
&
path
,
float
line_length
,
double
init_sphere_radius
,
double
sphere_radius
,
cv
::
viz
::
WSpheresTrajectory
::
WSpheresTrajectory
(
const
std
::
vector
<
Affine3f
>
&
path
,
float
line_length
,
double
init_sphere_radius
,
double
sphere_radius
,
const
Color
&
line_color
,
const
Color
&
sphere_color
)
{
vtkSmartPointer
<
vtkAppendPolyData
>
appendFilter
=
vtkSmartPointer
<
vtkAppendPolyData
>::
New
();
...
...
@@ -1490,8 +1490,8 @@ cv::viz::SpheresTrajectoryWidget::SpheresTrajectoryWidget(const std::vector<Affi
WidgetAccessor
::
setProp
(
*
this
,
actor
);
}
template
<>
cv
::
viz
::
SpheresTrajectoryWidget
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
SpheresTrajectoryWidget
>
()
template
<>
cv
::
viz
::
WSpheresTrajectory
cv
::
viz
::
Widget
::
cast
<
cv
::
viz
::
WSpheresTrajectory
>
()
{
Widget3D
widget
=
this
->
cast
<
Widget3D
>
();
return
static_cast
<
SpheresTrajectoryWidget
&>
(
widget
);
return
static_cast
<
WSpheresTrajectory
&>
(
widget
);
}
modules/viz/test/test_viz3d.cpp
View file @
c31fb8ff
...
...
@@ -41,15 +41,9 @@
//M*/
#include "test_precomp.hpp"
#include <opencv2/viz.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/calib3d.hpp>
#include <fstream>
#include <string>
#include <opencv2/viz.hpp>
using
namespace
cv
;
cv
::
Mat
cvcloud_load
()
...
...
@@ -68,226 +62,121 @@ cv::Mat cvcloud_load()
return
cloud
;
}
TEST
(
Viz_viz3d
,
accuracy
)
{
cv
::
Mat
cloud
=
cvcloud_load
();
cv
::
Mat
colors
(
cloud
.
size
(),
CV_8UC3
,
cv
::
Scalar
(
0
,
255
,
0
));
cv
::
Mat
normals
(
cloud
.
size
(),
cloud
.
type
(),
cv
::
Scalar
(
0
,
10
,
0
));
//cv::viz::Mesh3d::Ptr mesh = cv::viz::Mesh3d::mesh_load("/Users/nerei/horse.ply");
bool
constant_cam
=
true
;
cv
::
viz
::
Widget
cam_1
,
cam_coordinates
;
const
Vec4d
data
[]
=
{
Vec4d
(
0.0
,
0.0
,
0.0
,
0.0
),
Vec4d
(
1.0
,
1.0
,
1.0
,
1.0
),
cv
::
Vec4d
(
0.0
,
2.0
,
0.0
,
0.0
),
cv
::
Vec4d
(
3.0
,
4.0
,
1.0
,
1.0
)
};
cv
::
Mat
points
(
1
,
sizeof
(
data
)
/
sizeof
(
data
[
0
]),
CV_64FC4
,
(
void
*
)
data
);
points
=
points
.
reshape
(
4
,
2
);
void
keyboard_callback
(
const
viz
::
KeyboardEvent
&
event
,
void
*
cookie
)
{
if
(
event
.
keyDown
())
{
if
(
event
.
getKeySym
()
==
"space"
)
{
viz
::
Viz3d
&
viz
=
*
((
viz
::
Viz3d
*
)
cookie
);
constant_cam
=
!
constant_cam
;
if
(
constant_cam
)
{
viz
.
showWidget
(
"cam_1"
,
cam_1
);
viz
.
showWidget
(
"cam_coordinate"
,
cam_coordinates
);
viz
.
showWidget
(
"cam_text"
,
viz
::
WText
(
"Global View"
,
Point2i
(
5
,
5
),
28
));
viz
.
resetCamera
();
}
else
{
viz
.
showWidget
(
"cam_text"
,
viz
::
WText
(
"Cam View"
,
Point2i
(
5
,
5
),
28
));
viz
.
removeWidget
(
"cam_1"
);
viz
.
removeWidget
(
"cam_coordinate"
);
}
}
}
}
TEST
(
Viz_viz3d
,
accuracy
)
{
cv
::
viz
::
Viz3d
viz
(
"abc"
);
viz
.
setBackgroundColor
();
Vec3f
angle
=
Vec3f
::
all
(
0
);
Vec3f
pos
=
Vec3f
::
all
(
0
);
//viz.addPolygonMesh(*mesh, "pq");
cv
::
viz
::
Mesh3d
bunny_mesh
=
cv
::
viz
::
Mesh3d
::
loadMesh
(
"bunny.ply"
);
cv
::
viz
::
WMesh
bunny_widget
(
bunny_mesh
);
bunny_widget
.
setColor
(
cv
::
viz
::
Color
::
cyan
());
viz
::
Color
color
=
viz
::
Color
::
black
();
cam_1
=
cv
::
viz
::
WCameraPosition
(
cv
::
Vec2f
(
0.6
,
0.4
),
0.2
,
cv
::
viz
::
Color
::
green
());
cam_coordinates
=
cv
::
viz
::
WCameraPosition
(
0.2
);
viz
::
LineWidget
lw
(
Point3f
(
0
,
0
,
0
),
Point3f
(
4.
f
,
4.
f
,
4.
f
),
viz
::
Color
::
green
());
viz
::
PlaneWidget
pw
(
Vec4f
(
0.0
,
1.0
,
2.0
,
3.0
));
viz
::
PlaneWidget
pw2
(
Vec4f
(
0.0
,
1.0
,
2.0
,
3.0
),
2.0
,
viz
::
Color
::
red
());
viz
::
PlaneWidget
pw3
(
Vec4f
(
0.0
,
1.0
,
2.0
,
3.0
),
3.0
,
viz
::
Color
::
blue
());
viz
::
SphereWidget
sw
(
Point3f
(
0
,
0
,
0
),
0.2
);
viz
::
ArrowWidget
aw
(
Point3f
(
0
,
0
,
0
),
Point3f
(
1
,
1
,
1
),
0.01
,
viz
::
Color
::
red
());
viz
::
CircleWidget
cw
(
Point3f
(
0
,
0
,
0
),
0.5
,
0.01
,
viz
::
Color
::
green
());
viz
::
CylinderWidget
cyw
(
Point3f
(
0
,
0
,
0
),
Point3f
(
-
1
,
-
1
,
-
1
),
0.5
,
30
,
viz
::
Color
::
green
());
viz
::
CubeWidget
cuw
(
Point3f
(
-
2
,
-
2
,
-
2
),
Point3f
(
-
1
,
-
1
,
-
1
));
viz
::
CoordinateSystemWidget
csw
;
viz
::
TextWidget
tw
(
"TEST"
,
Point
(
100
,
100
),
20
);
viz
::
CloudWidget
pcw
(
cloud
,
colors
);
// pcw.setRenderingProperty(VIZ_LINE_WIDTH));
viz
::
CloudWidget
pcw2
(
cloud
,
viz
::
Color
::
magenta
());
// viz.showWidget("line", lw);
viz
.
showWidget
(
"plane"
,
pw
);
viz
.
showWidget
(
"plane2"
,
pw2
);
viz
.
showWidget
(
"plane3"
,
pw3
);
// viz.showWidget("sphere", sw);
// viz.showWidget("arrow", aw);
// viz.showWidget("circle", cw);
// viz.showWidget("cylinder", cyw);
// viz.showWidget("cube", cuw);
viz
.
showWidget
(
"coordinateSystem"
,
csw
);
// viz.showWidget("coordinateSystem2", viz::CoordinateSystemWidget(2.0), Affine3f().translate(Vec3f(2, 0, 0)));
// viz.showWidget("text",tw);
// viz.showWidget("pcw",pcw);
// viz.showWidget("pcw2",pcw2);
// viz::LineWidget lw2 = lw;
// v.showPointCloud("cld",cloud, colors);
viz
.
showWidget
(
"bunny"
,
bunny_widget
);
viz
.
showWidget
(
"cam_1"
,
cam_1
,
viz
::
makeCameraPose
(
Point3f
(
1.0
,
0.0
,
0.0
),
Point3f
(
0.0
,
0.0
,
0.0
),
Point3f
(
0.0
,
1.0
,
0.0
)));
viz
.
showWidget
(
"cam_coordinate"
,
cam_coordinates
,
viz
::
makeCameraPose
(
Point3f
(
1.0
,
0.0
,
0.0
),
Point3f
(
0.0
,
0.0
,
0.0
),
Point3f
(
0.0
,
1.0
,
0.0
)));
// v.addPointCloudNormals(cloud, normals, 100, 0.02, "n");
//viz::CloudNormalsWidget cnw(cloud, normals);
//v.showWidget("n", cnw);
std
::
vector
<
Affine3f
>
cam_path
;
for
(
int
i
=
0
,
j
=
0
;
i
<=
360
;
++
i
,
j
+=
5
)
{
cam_path
.
push_back
(
viz
::
makeCameraPose
(
Point3f
(
0.5
*
cos
(
double
(
i
)
*
CV_PI
/
180.0
),
0.5
*
sin
(
double
(
j
)
*
CV_PI
/
180.0
),
0.5
*
sin
(
double
(
i
)
*
CV_PI
/
180.0
)),
Point3f
(
0.0
,
0.0
,
0.0
),
Point3f
(
0.0
,
1.0
,
0.0
)));
}
int
path_counter
=
0
;
int
cam_path_size
=
cam_path
.
size
();
// OTHER WIDGETS
cv
::
Mat
img
=
imread
(
"opencv.png"
);
// lw = v.getWidget("n").cast<viz::LineWidget>();
// pw = v.getWidget("n").cast<viz::PlaneWidget>();
viz
::
PolyLineWidget
plw
(
points
,
viz
::
Color
::
green
());
// viz.showWidget("polyline", plw);
// lw = v.getWidget("polyline").cast<viz::LineWidget>();
viz
::
Mesh3d
mesh
=
cv
::
viz
::
Mesh3d
::
loadMesh
(
"/Users/nerei/horse.ply"
);
// viz::MeshWidget mw(mesh);
// viz.showWidget("mesh", mw);
Mat
img
=
imread
(
"opencv.png"
);
// resize(img, img, Size(50,50));
// viz.showWidget("img", viz::ImageOverlayWidget(img, Point2i(50,50)));
Matx33f
K
(
657
,
0
,
320
,
0
,
657
,
240
,
0
,
0
,
1
);
//viz::CameraPositionWidget cpw(Vec3f(0.5, 0.5, 3.0), Vec3f(0.0,0.0,0.0), Vec3f(0.0,-1.0,0.0), 0.5);
viz
::
CameraPositionWidget
cpw2
(
0.5
);
viz
::
CameraPositionWidget
frustum
(
K
,
2.0
,
viz
::
Color
::
green
());
// viz::CameraPositionWidget frustum2(K, 4.0, viz::Color::red());
viz
::
CameraPositionWidget
frustum2
(
K
,
4.0
,
viz
::
Color
::
red
());
viz
::
CameraPositionWidget
frustum3
(
Vec2f
(
CV_PI
,
CV_PI
/
2
),
4.0
);
viz
::
Text3DWidget
t3w1
(
"Camera1"
,
Point3f
(
0.4
,
0.6
,
3.0
),
0.1
);
viz
::
Text3DWidget
t3w2
(
"Camera2"
,
Point3f
(
0
,
0
,
0
),
0.1
);
// viz.showWidget("CameraPositionWidget", cpw);
// viz.showWidget("CameraPositionWidget2", cpw2, Affine3f(0.524, 0, 0, Vec3f(-1.0, 0.5, 0.5)));
// viz.showWidget("camera_label", t3w1);
// viz.showWidget("camera_label2", t3w2, Affine3f(0.524, 0, 0, Vec3f(-1.0, 0.5, 0.5)));
// viz.showWidget("frustrum", frustum, Affine3f(0.524, 0, 0, Vec3f(-1.0, 0.5, 0.5)));
// viz.showWidget("frustrum2", frustum2, Affine3f(0.524, 0, 0, Vec3f(-1.0, 0.5, 0.5)));
// viz.showWidget("frustum3", frustum3, Affine3f(0.524, 0, 0, Vec3f(-1.0, 0.5, 0.5)));
std
::
vector
<
Affine3f
>
trajectory
;
trajectory
.
push_back
(
Affine3f
().
translate
(
Vec3f
(
0.5
,
0.5
,
0.5
)));
trajectory
.
push_back
(
Affine3f
().
translate
(
Vec3f
(
1.0
,
0.0
,
0.0
)));
trajectory
.
push_back
(
Affine3f
().
translate
(
Vec3f
(
2.0
,
0.5
,
0.0
)));
trajectory
.
push_back
(
Affine3f
(
0.5
,
0.0
,
0.0
,
Vec3f
(
1.0
,
0.0
,
1.0
)));
//
//viz.showWidget("trajectory1", viz::TrajectoryWidget(trajectory, viz::Color(0,255,255), true, 0.5));
viz
.
showWidget
(
"trajectory2"
,
viz
::
TrajectoryWidget
(
trajectory
,
K
,
1.0
,
viz
::
Color
(
255
,
0
,
255
)));
// cv::Rodrigues2(Vec3f(), Mat());
int
downSample
=
4
;
int
row_max
=
img
.
rows
/
downSample
;
int
col_max
=
img
.
cols
/
downSample
;
// viz.showWidget("trajectory1", viz::TrajectoryWidget(trajectory/*, viz::Color::yellow()*/));
cv
::
Mat
clouds
[
img
.
cols
/
downSample
];
cv
::
Mat
colors
[
img
.
cols
/
downSample
];
// viz.showWidget("CameraPositionWidget2", cpw2);
// viz.showWidget("CameraPositionWidget3", cpw3);
for
(
int
col
=
0
;
col
<
col_max
;
++
col
)
{
clouds
[
col
]
=
Mat
::
zeros
(
img
.
rows
/
downSample
,
1
,
CV_32FC3
);
colors
[
col
]
=
Mat
::
zeros
(
img
.
rows
/
downSample
,
1
,
CV_8UC3
);
for
(
int
row
=
0
;
row
<
row_max
;
++
row
)
{
clouds
[
col
].
at
<
Vec3f
>
(
row
)
=
Vec3f
(
downSample
*
float
(
col
)
/
img
.
cols
,
1.0
-
(
downSample
*
float
(
row
)
/
img
.
rows
),
0.0
);
colors
[
col
].
at
<
Vec3b
>
(
row
)
=
img
.
at
<
Vec3b
>
(
row
*
downSample
,
col
*
downSample
);
}
}
viz
.
spin
();
//viz::GridWidget gw(viz::Vec2i(100,100), viz::Vec2d(1,1));
//v.showWidget("grid", gw);
// lw = viz.getWidget("grid").cast<cv::viz::LineWidget>();
for
(
int
col
=
0
;
col
<
col_max
;
++
col
)
{
std
::
stringstream
strstrm
;
strstrm
<<
"cloud_"
<<
col
;
viz
.
showWidget
(
strstrm
.
str
(),
viz
::
WCloud
(
clouds
[
col
],
colors
[
col
]));
viz
.
getWidget
(
strstrm
.
str
()).
setRenderingProperty
(
viz
::
POINT_SIZE
,
3.0
);
viz
.
getWidget
(
strstrm
.
str
()).
setRenderingProperty
(
viz
::
OPACITY
,
0.45
);
}
//viz::Text3DWidget t3w("OpenCV", cv::Point3f(0.0, 2.0, 0.0), 1.0, viz::Color(255,255,0));
//v.showWidget("txt3d", t3w);
viz
.
showWidget
(
"trajectory"
,
viz
::
WTrajectory
(
cam_path
,
viz
::
WTrajectory
::
DISPLAY_PATH
,
viz
::
Color
::
yellow
()));
viz
.
showWidget
(
"cam_text"
,
viz
::
WText
(
"Global View"
,
Point2i
(
5
,
5
),
28
));
viz
.
registerKeyboardCallback
(
keyboard_callback
,
(
void
*
)
&
viz
);
// float grid_x_angle = 0.0;
int
angle
=
0
;
while
(
!
viz
.
wasStopped
())
{
// Creating new point cloud with id cloud1
cv
::
Affine3f
cloudPosition
(
angle
,
pos
);
cv
::
Affine3f
cloudPosition2
(
angle
,
pos
+
Vec3f
(
0.2
f
,
0.2
f
,
0.2
f
));
lw
.
setColor
(
color
);
// lw.setLineWidth(pos_x * 10);
//plw.setColor(viz::Color(col_blue, col_green, col_red));
// sw.setPose(cloudPosition);
// pw.setPose(cloudPosition);
aw
.
setPose
(
cloudPosition
);
cw
.
setPose
(
cloudPosition
);
cyw
.
setPose
(
cloudPosition
);
frustum
.
setPose
(
cloudPosition
);
// lw.setPose(cloudPosition);
// cpw.updatePose(Affine3f(0.1,0.0,0.0, cv::Vec3f(0.0,0.0,0.0)));
// cpw.setPose(cloudPosition);
// cnw.setPose(cloudPosition);
// v.showWidget("pcw",pcw, cloudPosition);
// v.showWidget("pcw2",pcw2, cloudPosition2);
// v.showWidget("plane", pw, cloudPosition);
// v.setWidgetPose("n",cloudPosition);
// v.setWidgetPose("pcw2", cloudPosition);
//cnw.setColor(viz::Color(col_blue, col_green, col_red));
//pcw2.setColor(viz::Color(col_blue, col_green, col_red));
//gw.updatePose(viz::Affine3f(0.0, 0.1, 0.0, cv::Vec3f(0.0,0.0,0.0)));
if
(
path_counter
==
cam_path_size
)
{
path_counter
=
0
;
}
if
(
!
constant_cam
)
{
viz
.
setViewerPose
(
cam_path
[
path_counter
]);
}
angle
[
0
]
+=
0.1
f
;
angle
[
1
]
-=
0.1
f
;
angle
[
2
]
+=
0.1
f
;
pos
[
0
]
=
std
::
sin
(
angle
[
0
]);
pos
[
1
]
=
std
::
sin
(
angle
[
1
]);
pos
[
2
]
=
std
::
sin
(
angle
[
2
]);
if
(
angle
==
360
)
angle
=
0
;
color
[
0
]
=
int
(
angle
[
0
]
*
10
)
%
256
;
color
[
1
]
=
int
(
angle
[
0
]
*
20
)
%
256
;
color
[
2
]
=
int
(
angle
[
0
]
*
30
)
%
256
;
viz
.
spinOnce
(
1
,
true
);
cam_1
.
cast
<
viz
::
WCameraPosition
>
().
setPose
(
cam_path
[
path_counter
]);
cam_coordinates
.
cast
<
viz
::
WCameraPosition
>
().
setPose
(
cam_path
[
path_counter
++
]);
for
(
int
i
=
0
;
i
<
col_max
;
++
i
)
{
std
::
stringstream
strstrm
;
strstrm
<<
"cloud_"
<<
i
;
viz
.
setWidgetPose
(
strstrm
.
str
(),
Affine3f
().
translate
(
Vec3f
(
-
0.5
,
0.0
,
-
0.7
+
0.2
*
sin
((
angle
+
i
*
10
)
*
CV_PI
/
180.0
))));
}
angle
+=
10
;
viz
.
spinOnce
(
42
,
true
);
}
//
//
// viz::ModelCoefficients mc;
// mc.values.resize(4);
// mc.values[0] = mc.values[1] = mc.values[2] = mc.values[3] = 1;
// v.addPlane(mc);
//
//
// viz::Mesh3d::Ptr mesh = viz::mesh_load("horse.ply");
// v.addPolygonMesh(*mesh, "pq");
//
// v.spinOnce(1000, true);
//
// v.removeCoordinateSystem();
//
// for(int i = 0; i < mesh->cloud.cols; ++i)
// mesh->cloud.ptr<cv::Point3f>()[i] += cv::Point3f(1, 1, 1);
//
// v.updatePolygonMesh(*mesh, "pq");
//
//
// for(int i = 0; i < mesh->cloud.cols; ++i)
// mesh->cloud.ptr<cv::Point3f>()[i] -= cv::Point3f(2, 2, 2);
// v.addPolylineFromPolygonMesh(*mesh);
//
//
// v.addText("===Abd sadfljsadlk", 100, 100, cv::Scalar(255, 0, 0), 15);
// for(int i = 0; i < cloud.cols; ++i)
// cloud.ptr<cv::Point3f>()[i].x *=2;
//
// colors.setTo(cv::Scalar(255, 0, 0));
//
// v.addSphere(cv::Point3f(0, 0, 0), 0.3, viz::Color::blue());
//
// cv::Mat cvpoly(1, 5, CV_32FC3);
// cv::Point3f* pdata = cvpoly.ptr<cv::Point3f>();
// pdata[0] = cv::Point3f(0, 0, 0);
// pdata[1] = cv::Point3f(0, 1, 1);
// pdata[2] = cv::Point3f(3, 1, 2);
// pdata[3] = cv::Point3f(0, 2, 4);
// pdata[4] = cv::Point3f(7, 2, 3);
// v.addPolygon(cvpoly, viz::Color::white());
//
// // Updating cloud1
// v.showPointCloud("cloud1", cloud, colors);
// v.spin();
}
samples/cpp/tutorial_code/viz/creating_widgets.cpp
View file @
c31fb8ff
...
...
@@ -39,17 +39,17 @@ void help()
* @class TriangleWidget
* @brief Defining our own 3D Triangle widget
*/
class
TriangleWidget
:
public
viz
::
Widget3D
class
WTriangle
:
public
viz
::
Widget3D
{
public
:
TriangleWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Point3f
&
pt3
,
const
viz
::
Color
&
color
=
viz
::
Color
::
white
());
WTriangle
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Point3f
&
pt3
,
const
viz
::
Color
&
color
=
viz
::
Color
::
white
());
};
/**
* @function TriangleWidget::TriangleWidget
* @brief Constructor
*/
TriangleWidget
::
TriangleWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Point3f
&
pt3
,
const
viz
::
Color
&
color
)
WTriangle
::
WTriangle
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Point3f
&
pt3
,
const
viz
::
Color
&
color
)
{
// Create a triangle
vtkSmartPointer
<
vtkPoints
>
points
=
vtkSmartPointer
<
vtkPoints
>::
New
();
...
...
@@ -101,7 +101,7 @@ int main()
viz
::
Viz3d
myWindow
(
"Creating Widgets"
);
/// Create a triangle widget
TriangleWidget
tw
(
Point3f
(
0.0
,
0.0
,
0.0
),
Point3f
(
1.0
,
1.0
,
1.0
),
Point3f
(
0.0
,
1.0
,
0.0
),
viz
::
Color
::
red
());
WTriangle
tw
(
Point3f
(
0.0
,
0.0
,
0.0
),
Point3f
(
1.0
,
1.0
,
1.0
),
Point3f
(
0.0
,
1.0
,
0.0
),
viz
::
Color
::
red
());
/// Show widget in the visualizer window
myWindow
.
showWidget
(
"TRIANGLE"
,
tw
);
...
...
samples/cpp/tutorial_code/viz/transformations.cpp
View file @
c31fb8ff
...
...
@@ -68,7 +68,7 @@ int main(int argn, char **argv)
viz
::
Viz3d
myWindow
(
"Coordinate Frame"
);
/// Add coordinate axes
myWindow
.
showWidget
(
"Coordinate Widget"
,
viz
::
CoordinateSystemWidget
());
myWindow
.
showWidget
(
"Coordinate Widget"
,
viz
::
WCoordinateSystem
());
/// Let's assume camera has the following properties
Point3f
cam_pos
(
3.0
f
,
3.0
f
,
3.0
f
),
cam_focal_point
(
3.0
f
,
3.0
f
,
2.0
f
),
cam_y_dir
(
-
1.0
f
,
0.0
f
,
0.0
f
);
...
...
@@ -82,7 +82,7 @@ int main(int argn, char **argv)
/// Create a cloud widget.
Mat
bunny_cloud
=
cvcloud_load
();
viz
::
CloudWidget
cloud_widget
(
bunny_cloud
,
viz
::
Color
::
green
());
viz
::
WCloud
cloud_widget
(
bunny_cloud
,
viz
::
Color
::
green
());
/// Pose of the widget in camera frame
Affine3f
cloud_pose
=
Affine3f
().
translate
(
Vec3f
(
0.0
f
,
0.0
f
,
3.0
f
));
...
...
@@ -92,8 +92,8 @@ int main(int argn, char **argv)
/// Visualize camera frame
if
(
!
camera_pov
)
{
viz
::
CameraPositionWidget
cpw
(
0.5
);
// Coordinate axes
viz
::
CameraPositionWidget
cpw_frustum
(
Vec2f
(
0.889484
,
0.523599
));
// Camera frustum
viz
::
WCameraPosition
cpw
(
0.5
);
// Coordinate axes
viz
::
WCameraPosition
cpw_frustum
(
Vec2f
(
0.889484
,
0.523599
));
// Camera frustum
myWindow
.
showWidget
(
"CPW"
,
cpw
,
cam_pose
);
myWindow
.
showWidget
(
"CPW_FRUSTUM"
,
cpw_frustum
,
cam_pose
);
}
...
...
samples/cpp/tutorial_code/viz/widget_pose.cpp
View file @
c31fb8ff
...
...
@@ -37,15 +37,15 @@ int main()
viz
::
Viz3d
myWindow
(
"Coordinate Frame"
);
/// Add coordinate axes
myWindow
.
showWidget
(
"Coordinate Widget"
,
viz
::
CoordinateSystemWidget
());
myWindow
.
showWidget
(
"Coordinate Widget"
,
viz
::
WCoordinateSystem
());
/// Add line to represent (1,1,1) axis
viz
::
LineWidget
axis
(
Point3f
(
-
1.0
f
,
-
1.0
f
,
-
1.0
f
),
Point3f
(
1.0
f
,
1.0
f
,
1.0
f
));
viz
::
WLine
axis
(
Point3f
(
-
1.0
f
,
-
1.0
f
,
-
1.0
f
),
Point3f
(
1.0
f
,
1.0
f
,
1.0
f
));
axis
.
setRenderingProperty
(
viz
::
LINE_WIDTH
,
4.0
);
myWindow
.
showWidget
(
"Line Widget"
,
axis
);
/// Construct a cube widget
viz
::
CubeWidget
cube_widget
(
Point3f
(
0.5
,
0.5
,
0.0
),
Point3f
(
0.0
,
0.0
,
-
0.5
),
true
,
viz
::
Color
::
blue
());
viz
::
WCube
cube_widget
(
Point3f
(
0.5
,
0.5
,
0.0
),
Point3f
(
0.0
,
0.0
,
-
0.5
),
true
,
viz
::
Color
::
blue
());
cube_widget
.
setRenderingProperty
(
viz
::
LINE_WIDTH
,
4.0
);
myWindow
.
showWidget
(
"Cube Widget"
,
cube_widget
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment