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
efa7f090
Commit
efa7f090
authored
Jul 04, 2013
by
Anatoly Baksheev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slight refactoring of widget system code
parent
daa2a205
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
194 additions
and
180 deletions
+194
-180
viz.hpp
modules/viz/include/opencv2/viz.hpp
+3
-0
types.hpp
modules/viz/include/opencv2/viz/types.hpp
+2
-32
viz3d.hpp
modules/viz/include/opencv2/viz/viz3d.hpp
+3
-2
widget_accessor.hpp
modules/viz/include/opencv2/viz/widget_accessor.hpp
+7
-3
widgets.hpp
modules/viz/include/opencv2/viz/widgets.hpp
+38
-0
precomp.hpp
modules/viz/src/precomp.hpp
+2
-0
simple_widgets.cpp
modules/viz/src/simple_widgets.cpp
+18
-0
types.cpp
modules/viz/src/types.cpp
+0
-132
viz3d.cpp
modules/viz/src/viz3d.cpp
+4
-4
viz3d_impl.cpp
modules/viz/src/viz3d_impl.cpp
+6
-6
widget.cpp
modules/viz/src/widget.cpp
+110
-0
test_viz3d.cpp
modules/viz/test/test_viz3d.cpp
+1
-1
No files found.
modules/viz/include/opencv2/viz.hpp
View file @
efa7f090
#pragma once
#pragma once
#include <opencv2/viz/types.hpp>
#include <opencv2/viz/widgets.hpp>
#include <opencv2/viz/viz3d.hpp>
#include <opencv2/viz/viz3d.hpp>
modules/viz/include/opencv2/viz/types.hpp
View file @
efa7f090
...
@@ -36,8 +36,6 @@ namespace temp_viz
...
@@ -36,8 +36,6 @@ namespace temp_viz
using
cv
::
DataType
;
using
cv
::
DataType
;
struct
CV_EXPORTS
ModelCoefficients
struct
CV_EXPORTS
ModelCoefficients
{
{
std
::
vector
<
float
>
values
;
std
::
vector
<
float
>
values
;
...
@@ -81,6 +79,8 @@ namespace temp_viz
...
@@ -81,6 +79,8 @@ namespace temp_viz
std
::
vector
<
Vertices
>
polygons
;
std
::
vector
<
Vertices
>
polygons
;
};
};
/////////////////////////////////////////////////////////////////////////////
/// Utility functions
inline
Color
vtkcolor
(
const
Color
&
color
)
inline
Color
vtkcolor
(
const
Color
&
color
)
{
{
...
@@ -90,12 +90,8 @@ namespace temp_viz
...
@@ -90,12 +90,8 @@ namespace temp_viz
}
}
inline
Vec3d
vtkpoint
(
const
Point3f
&
point
)
{
return
Vec3d
(
point
.
x
,
point
.
y
,
point
.
z
);
}
inline
Vec3d
vtkpoint
(
const
Point3f
&
point
)
{
return
Vec3d
(
point
.
x
,
point
.
y
,
point
.
z
);
}
template
<
typename
_Tp
>
inline
_Tp
normalized
(
const
_Tp
&
v
)
{
return
v
*
1
/
cv
::
norm
(
v
);
}
template
<
typename
_Tp
>
inline
_Tp
normalized
(
const
_Tp
&
v
)
{
return
v
*
1
/
cv
::
norm
(
v
);
}
inline
bool
isNan
(
float
x
)
inline
bool
isNan
(
float
x
)
{
{
unsigned
int
*
u
=
reinterpret_cast
<
unsigned
int
*>
(
&
x
);
unsigned
int
*
u
=
reinterpret_cast
<
unsigned
int
*>
(
&
x
);
...
@@ -113,30 +109,4 @@ namespace temp_viz
...
@@ -113,30 +109,4 @@ namespace temp_viz
template
<
typename
_Tp
>
inline
bool
isNan
(
const
Point3_
<
_Tp
>&
p
)
template
<
typename
_Tp
>
inline
bool
isNan
(
const
Point3_
<
_Tp
>&
p
)
{
return
isNan
(
p
.
x
)
||
isNan
(
p
.
y
)
||
isNan
(
p
.
z
);
}
{
return
isNan
(
p
.
x
)
||
isNan
(
p
.
y
)
||
isNan
(
p
.
z
);
}
class
Widget
{
public
:
Widget
();
Widget
(
const
Widget
&
other
);
Widget
&
operator
=
(
const
Widget
&
other
);
void
copyTo
(
Widget
&
dst
);
void
setColor
(
const
Color
&
color
);
void
setPose
(
const
Affine3f
&
pose
);
void
updatePose
(
const
Affine3f
&
pose
);
Affine3f
getPose
()
const
;
private
:
class
Impl
;
cv
::
Ptr
<
Impl
>
impl_
;
friend
struct
WidgetAccessor
;
};
class
LineWidget
:
public
Widget
{
public
:
LineWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
(
255
,
255
,
255
));
};
}
}
modules/viz/include/opencv2/viz/viz3d.hpp
View file @
efa7f090
...
@@ -10,6 +10,7 @@
...
@@ -10,6 +10,7 @@
#include <string>
#include <string>
#include <opencv2/viz/types.hpp>
#include <opencv2/viz/types.hpp>
#include <opencv2/viz/widgets.hpp>
#include <opencv2/viz/events.hpp>
#include <opencv2/viz/events.hpp>
namespace
temp_viz
namespace
temp_viz
...
@@ -33,8 +34,8 @@ namespace temp_viz
...
@@ -33,8 +34,8 @@ namespace temp_viz
bool
addPointCloudNormals
(
const
Mat
&
cloud
,
const
Mat
&
normals
,
int
level
=
100
,
float
scale
=
0.02
f
,
const
String
&
id
=
"cloud"
);
bool
addPointCloudNormals
(
const
Mat
&
cloud
,
const
Mat
&
normals
,
int
level
=
100
,
float
scale
=
0.02
f
,
const
String
&
id
=
"cloud"
);
void
showLine
(
const
String
&
id
,
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
::
white
());
void
showLine
(
const
String
&
id
,
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
::
white
());
void
showPlane
(
const
String
&
id
,
const
Vec4f
&
coefs
,
const
Color
&
color
=
Color
::
white
());
void
showPlane
(
const
String
&
id
,
const
Vec4f
&
coef
f
s
,
const
Color
&
color
=
Color
::
white
());
void
showPlane
(
const
String
&
id
,
const
Vec4f
&
coefs
,
const
Point3f
&
pt
,
const
Color
&
color
=
Color
::
white
());
void
showPlane
(
const
String
&
id
,
const
Vec4f
&
coef
f
s
,
const
Point3f
&
pt
,
const
Color
&
color
=
Color
::
white
());
void
showCube
(
const
String
&
id
,
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
::
white
());
void
showCube
(
const
String
&
id
,
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
::
white
());
void
showCylinder
(
const
String
&
id
,
const
Point3f
&
pt_on_axis
,
const
Point3f
&
axis_direction
,
double
radius
,
int
num_sides
,
const
Color
&
color
=
Color
::
white
());
void
showCylinder
(
const
String
&
id
,
const
Point3f
&
pt_on_axis
,
const
Point3f
&
axis_direction
,
double
radius
,
int
num_sides
,
const
Color
&
color
=
Color
::
white
());
void
showCircle
(
const
String
&
id
,
const
Point3f
&
pt
,
double
radius
,
const
Color
&
color
=
Color
::
white
());
void
showCircle
(
const
String
&
id
,
const
Point3f
&
pt
,
double
radius
,
const
Color
&
color
=
Color
::
white
());
...
...
modules/viz/include/opencv2/viz/widget_accessor.hpp
View file @
efa7f090
#pragma once
#pragma once
#include <opencv2/viz/types.hpp>
#include <opencv2/viz/widgets.hpp>
#include <vtkSmartPointer.h>
#include <vtkLODActor.h>
namespace
temp_viz
namespace
temp_viz
{
{
struct
WidgetAccessor
//The class is only that depends on VTK in its interface.
//It is indended for those user who want to develop own widgets system using VTK library API.
struct
CV_EXPORTS
WidgetAccessor
{
{
static
CV_EXPORTS
vtkSmartPointer
<
vtkLODActor
>
getActor
(
const
Widget
&
widget
);
static
vtkSmartPointer
<
vtkLODActor
>
getActor
(
const
Widget
&
widget
);
};
};
}
}
modules/viz/include/opencv2/viz/widgets.hpp
0 → 100644
View file @
efa7f090
#pragma once
#include <opencv2/viz/types.hpp>
namespace
temp_viz
{
/////////////////////////////////////////////////////////////////////////////
/// brief The base class for all widgets
class
CV_EXPORTS
Widget
{
public
:
Widget
();
Widget
(
const
Widget
&
other
);
Widget
&
operator
=
(
const
Widget
&
other
);
void
copyTo
(
Widget
&
dst
);
void
setColor
(
const
Color
&
color
);
void
setPose
(
const
Affine3f
&
pose
);
void
updatePose
(
const
Affine3f
&
pose
);
Affine3f
getPose
()
const
;
private
:
class
Impl
;
cv
::
Ptr
<
Impl
>
impl_
;
friend
struct
WidgetAccessor
;
};
class
CV_EXPORTS
LineWidget
:
public
Widget
{
public
:
LineWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
=
Color
::
white
());
};
}
modules/viz/src/precomp.hpp
View file @
efa7f090
...
@@ -154,3 +154,5 @@
...
@@ -154,3 +154,5 @@
#include <q/shapes.h>
#include <q/shapes.h>
#include "opencv2/viz/widget_accessor.hpp"
#include <opencv2/viz/widgets.hpp>
modules/viz/src/simple_widgets.cpp
0 → 100644
View file @
efa7f090
#include "precomp.hpp"
temp_viz
::
LineWidget
::
LineWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
)
{
vtkSmartPointer
<
vtkLineSource
>
line
=
vtkSmartPointer
<
vtkLineSource
>::
New
();
line
->
SetPoint1
(
pt1
.
x
,
pt1
.
y
,
pt1
.
z
);
line
->
SetPoint2
(
pt2
.
x
,
pt2
.
y
,
pt2
.
z
);
line
->
Update
();
vtkSmartPointer
<
vtkDataSetMapper
>
mapper
=
vtkSmartPointer
<
vtkDataSetMapper
>::
New
();
mapper
->
SetInput
(
line
->
GetOutput
());
vtkSmartPointer
<
vtkLODActor
>
actor
=
WidgetAccessor
::
getActor
(
*
this
);
actor
->
SetMapper
(
mapper
);
setColor
(
color
);
}
modules/viz/src/types.cpp
View file @
efa7f090
...
@@ -20,134 +20,3 @@ temp_viz::Color temp_viz::Color::white() { return Color(255, 255, 255); }
...
@@ -20,134 +20,3 @@ temp_viz::Color temp_viz::Color::white() { return Color(255, 255, 255); }
temp_viz
::
Color
temp_viz
::
Color
::
gray
()
{
return
Color
(
128
,
128
,
128
);
}
temp_viz
::
Color
temp_viz
::
Color
::
gray
()
{
return
Color
(
128
,
128
,
128
);
}
class
temp_viz
::
Widget
::
Impl
{
public
:
String
id
;
vtkSmartPointer
<
vtkLODActor
>
actor
;
Impl
()
{
actor
=
vtkSmartPointer
<
vtkLODActor
>::
New
();
}
vtkSmartPointer
<
vtkLODActor
>
getActor
()
{
return
actor
;
}
void
setColor
(
const
Color
&
color
)
{
Color
c
=
vtkcolor
(
color
);
actor
->
GetMapper
()
->
ScalarVisibilityOff
();
actor
->
GetProperty
()
->
SetColor
(
c
.
val
);
actor
->
GetProperty
()
->
SetEdgeColor
(
c
.
val
);
actor
->
GetProperty
()
->
SetAmbient
(
0.8
);
actor
->
GetProperty
()
->
SetDiffuse
(
0.8
);
actor
->
GetProperty
()
->
SetSpecular
(
0.8
);
actor
->
GetProperty
()
->
SetLighting
(
0
);
actor
->
Modified
();
}
void
setPose
(
const
Affine3f
&
pose
)
{
vtkSmartPointer
<
vtkMatrix4x4
>
matrix
=
convertToVtkMatrix
(
pose
.
matrix
);
actor
->
SetUserMatrix
(
matrix
);
actor
->
Modified
();
}
void
updatePose
(
const
Affine3f
&
pose
)
{
vtkSmartPointer
<
vtkMatrix4x4
>
matrix
=
actor
->
GetUserMatrix
();
Matx44f
matrix_cv
;
convertToCvMatrix
(
matrix
,
matrix_cv
);
matrix
=
convertToVtkMatrix
((
pose
*
Affine3f
(
matrix_cv
)).
matrix
);
actor
->
SetUserMatrix
(
matrix
);
actor
->
Modified
();
}
Affine3f
getPose
()
const
{
vtkSmartPointer
<
vtkMatrix4x4
>
matrix
=
actor
->
GetUserMatrix
();
Matx44f
matrix_cv
;
convertToCvMatrix
(
matrix
,
matrix_cv
);
return
Affine3f
(
matrix_cv
);
}
protected
:
vtkSmartPointer
<
vtkMatrix4x4
>
convertToVtkMatrix
(
const
cv
::
Matx44f
&
m
)
const
{
vtkSmartPointer
<
vtkMatrix4x4
>
vtk_matrix
=
vtkSmartPointer
<
vtkMatrix4x4
>::
New
();
for
(
int
i
=
0
;
i
<
4
;
i
++
)
for
(
int
k
=
0
;
k
<
4
;
k
++
)
vtk_matrix
->
SetElement
(
i
,
k
,
m
(
i
,
k
));
return
vtk_matrix
;
}
void
convertToCvMatrix
(
const
vtkSmartPointer
<
vtkMatrix4x4
>
&
vtk_matrix
,
cv
::
Matx44f
&
m
)
const
{
for
(
int
i
=
0
;
i
<
4
;
i
++
)
for
(
int
k
=
0
;
k
<
4
;
k
++
)
m
(
i
,
k
)
=
vtk_matrix
->
GetElement
(
i
,
k
);
}
};
temp_viz
::
Widget
::
Widget
()
{
impl_
=
new
Impl
();
}
temp_viz
::
Widget
::
Widget
(
const
Widget
&
other
)
{
impl_
=
other
.
impl_
;
}
temp_viz
::
Widget
&
temp_viz
::
Widget
::
operator
=
(
const
Widget
&
other
)
{
if
(
this
!=
&
other
)
impl_
=
other
.
impl_
;
return
*
this
;
}
void
temp_viz
::
Widget
::
copyTo
(
Widget
&
dst
)
{
// TODO Deep copy the data if there is any
}
void
temp_viz
::
Widget
::
setColor
(
const
Color
&
color
)
{
impl_
->
setColor
(
color
);
}
void
temp_viz
::
Widget
::
setPose
(
const
Affine3f
&
pose
)
{
impl_
->
setPose
(
pose
);
}
void
temp_viz
::
Widget
::
updatePose
(
const
Affine3f
&
pose
)
{
impl_
->
updatePose
(
pose
);
}
temp_viz
::
Affine3f
temp_viz
::
Widget
::
getPose
()
const
{
return
impl_
->
getPose
();
}
#include "opencv2/viz/widget_accessor.hpp"
vtkSmartPointer
<
vtkLODActor
>
temp_viz
::
WidgetAccessor
::
getActor
(
const
temp_viz
::
Widget
&
widget
)
{
return
widget
.
impl_
->
actor
;
}
temp_viz
::
LineWidget
::
LineWidget
(
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
)
:
Widget
()
{
// Create the line and set actor's data
vtkSmartPointer
<
vtkDataSetMapper
>
mapper
=
vtkSmartPointer
<
vtkDataSetMapper
>::
New
();
mapper
->
SetInput
(
createLine
(
pt1
,
pt2
));
temp_viz
::
WidgetAccessor
::
getActor
(
*
this
)
->
SetMapper
(
mapper
);
setColor
(
color
);
}
\ No newline at end of file
modules/viz/src/viz3d.cpp
View file @
efa7f090
...
@@ -77,14 +77,14 @@ void temp_viz::Viz3d::showLine(const String& id, const Point3f& pt1, const Point
...
@@ -77,14 +77,14 @@ void temp_viz::Viz3d::showLine(const String& id, const Point3f& pt1, const Point
impl_
->
showLine
(
id
,
pt1
,
pt2
,
color
);
impl_
->
showLine
(
id
,
pt1
,
pt2
,
color
);
}
}
void
temp_viz
::
Viz3d
::
showPlane
(
const
String
&
id
,
const
Vec4f
&
coefs
,
const
Color
&
color
)
void
temp_viz
::
Viz3d
::
showPlane
(
const
String
&
id
,
const
Vec4f
&
coef
f
s
,
const
Color
&
color
)
{
{
impl_
->
showPlane
(
id
,
coefs
,
color
);
impl_
->
showPlane
(
id
,
coef
f
s
,
color
);
}
}
void
temp_viz
::
Viz3d
::
showPlane
(
const
String
&
id
,
const
Vec4f
&
coefs
,
const
Point3f
&
pt
,
const
Color
&
color
)
void
temp_viz
::
Viz3d
::
showPlane
(
const
String
&
id
,
const
Vec4f
&
coef
f
s
,
const
Point3f
&
pt
,
const
Color
&
color
)
{
{
impl_
->
showPlane
(
id
,
coefs
,
pt
,
color
);
impl_
->
showPlane
(
id
,
coef
f
s
,
pt
,
color
);
}
}
void
temp_viz
::
Viz3d
::
showCube
(
const
String
&
id
,
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
)
void
temp_viz
::
Viz3d
::
showCube
(
const
String
&
id
,
const
Point3f
&
pt1
,
const
Point3f
&
pt2
,
const
Color
&
color
)
...
...
modules/viz/src/viz3d_impl.cpp
View file @
efa7f090
...
@@ -416,7 +416,7 @@ void temp_viz::Viz3d::VizImpl::showLine (const String& id, const Point3f& pt1, c
...
@@ -416,7 +416,7 @@ void temp_viz::Viz3d::VizImpl::showLine (const String& id, const Point3f& pt1, c
}
}
}
}
void
temp_viz
::
Viz3d
::
VizImpl
::
showPlane
(
const
String
&
id
,
const
cv
::
Vec4f
&
coefs
,
const
Color
&
color
)
void
temp_viz
::
Viz3d
::
VizImpl
::
showPlane
(
const
String
&
id
,
const
cv
::
Vec4f
&
coef
f
s
,
const
Color
&
color
)
{
{
// Check if this Id already exists
// Check if this Id already exists
ShapeActorMap
::
iterator
am_it
=
shape_actor_map_
->
find
(
id
);
ShapeActorMap
::
iterator
am_it
=
shape_actor_map_
->
find
(
id
);
...
@@ -426,7 +426,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id, const cv::Vec4f &coe
...
@@ -426,7 +426,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id, const cv::Vec4f &coe
if
(
exists
)
if
(
exists
)
{
{
vtkSmartPointer
<
vtkLODActor
>
actor
=
vtkLODActor
::
SafeDownCast
(
am_it
->
second
);
vtkSmartPointer
<
vtkLODActor
>
actor
=
vtkLODActor
::
SafeDownCast
(
am_it
->
second
);
reinterpret_cast
<
vtkDataSetMapper
*>
(
actor
->
GetMapper
())
->
SetInput
(
createPlane
(
coefs
));
reinterpret_cast
<
vtkDataSetMapper
*>
(
actor
->
GetMapper
())
->
SetInput
(
createPlane
(
coef
f
s
));
actor
->
GetProperty
()
->
SetColor
(
c
.
val
);
actor
->
GetProperty
()
->
SetColor
(
c
.
val
);
actor
->
GetMapper
()
->
ScalarVisibilityOff
();
actor
->
GetMapper
()
->
ScalarVisibilityOff
();
actor
->
Modified
();
actor
->
Modified
();
...
@@ -434,7 +434,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id, const cv::Vec4f &coe
...
@@ -434,7 +434,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id, const cv::Vec4f &coe
else
else
{
{
// Create a plane
// Create a plane
vtkSmartPointer
<
vtkDataSet
>
data
=
createPlane
(
coefs
);
vtkSmartPointer
<
vtkDataSet
>
data
=
createPlane
(
coef
f
s
);
// Create an Actor
// Create an Actor
vtkSmartPointer
<
vtkLODActor
>
actor
;
vtkSmartPointer
<
vtkLODActor
>
actor
;
...
@@ -451,7 +451,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id, const cv::Vec4f &coe
...
@@ -451,7 +451,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id, const cv::Vec4f &coe
}
}
}
}
void
temp_viz
::
Viz3d
::
VizImpl
::
showPlane
(
const
String
&
id
,
const
cv
::
Vec4f
&
coefs
,
const
Point3f
&
pt
,
const
Color
&
color
)
void
temp_viz
::
Viz3d
::
VizImpl
::
showPlane
(
const
String
&
id
,
const
cv
::
Vec4f
&
coef
f
s
,
const
Point3f
&
pt
,
const
Color
&
color
)
{
{
// Check if this Id already exists
// Check if this Id already exists
ShapeActorMap
::
iterator
am_it
=
shape_actor_map_
->
find
(
id
);
ShapeActorMap
::
iterator
am_it
=
shape_actor_map_
->
find
(
id
);
...
@@ -461,7 +461,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id ,const cv::Vec4f &coe
...
@@ -461,7 +461,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id ,const cv::Vec4f &coe
if
(
exists
)
if
(
exists
)
{
{
vtkSmartPointer
<
vtkLODActor
>
actor
=
vtkLODActor
::
SafeDownCast
(
am_it
->
second
);
vtkSmartPointer
<
vtkLODActor
>
actor
=
vtkLODActor
::
SafeDownCast
(
am_it
->
second
);
reinterpret_cast
<
vtkDataSetMapper
*>
(
actor
->
GetMapper
())
->
SetInput
(
createPlane
(
coefs
,
pt
));
reinterpret_cast
<
vtkDataSetMapper
*>
(
actor
->
GetMapper
())
->
SetInput
(
createPlane
(
coef
f
s
,
pt
));
actor
->
GetProperty
()
->
SetColor
(
c
.
val
);
actor
->
GetProperty
()
->
SetColor
(
c
.
val
);
actor
->
GetMapper
()
->
ScalarVisibilityOff
();
actor
->
GetMapper
()
->
ScalarVisibilityOff
();
actor
->
Modified
();
actor
->
Modified
();
...
@@ -469,7 +469,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id ,const cv::Vec4f &coe
...
@@ -469,7 +469,7 @@ void temp_viz::Viz3d::VizImpl::showPlane (const String& id ,const cv::Vec4f &coe
else
else
{
{
// Create a plane
// Create a plane
vtkSmartPointer
<
vtkDataSet
>
data
=
createPlane
(
coefs
,
pt
);
vtkSmartPointer
<
vtkDataSet
>
data
=
createPlane
(
coef
f
s
,
pt
);
// Create an Actor
// Create an Actor
vtkSmartPointer
<
vtkLODActor
>
actor
;
vtkSmartPointer
<
vtkLODActor
>
actor
;
...
...
modules/viz/src/widget.cpp
0 → 100644
View file @
efa7f090
#include "precomp.hpp"
class
temp_viz
::
Widget
::
Impl
{
public
:
vtkSmartPointer
<
vtkLODActor
>
actor
;
Impl
()
:
actor
(
vtkSmartPointer
<
vtkLODActor
>::
New
())
{}
void
setColor
(
const
Color
&
color
)
{
Color
c
=
vtkcolor
(
color
);
actor
->
GetMapper
()
->
ScalarVisibilityOff
();
actor
->
GetProperty
()
->
SetColor
(
c
.
val
);
actor
->
GetProperty
()
->
SetEdgeColor
(
c
.
val
);
actor
->
GetProperty
()
->
SetAmbient
(
0.8
);
actor
->
GetProperty
()
->
SetDiffuse
(
0.8
);
actor
->
GetProperty
()
->
SetSpecular
(
0.8
);
actor
->
GetProperty
()
->
SetLighting
(
0
);
actor
->
Modified
();
}
void
setPose
(
const
Affine3f
&
pose
)
{
vtkSmartPointer
<
vtkMatrix4x4
>
matrix
=
convertToVtkMatrix
(
pose
.
matrix
);
actor
->
SetUserMatrix
(
matrix
);
actor
->
Modified
();
}
void
updatePose
(
const
Affine3f
&
pose
)
{
vtkSmartPointer
<
vtkMatrix4x4
>
matrix
=
actor
->
GetUserMatrix
();
Matx44f
matrix_cv
=
convertToMatx
(
matrix
);
Affine3f
updated_pose
=
pose
*
Affine3f
(
matrix_cv
);
matrix
=
convertToVtkMatrix
(
updated_pose
.
matrix
);
actor
->
SetUserMatrix
(
matrix
);
actor
->
Modified
();
}
Affine3f
getPose
()
const
{
vtkSmartPointer
<
vtkMatrix4x4
>
matrix
=
actor
->
GetUserMatrix
();
Matx44f
matrix_cv
=
convertToMatx
(
matrix
);
return
Affine3f
(
matrix_cv
);
}
protected
:
static
vtkSmartPointer
<
vtkMatrix4x4
>
convertToVtkMatrix
(
const
cv
::
Matx44f
&
m
)
{
vtkSmartPointer
<
vtkMatrix4x4
>
vtk_matrix
=
vtkSmartPointer
<
vtkMatrix4x4
>::
New
();
for
(
int
i
=
0
;
i
<
4
;
i
++
)
for
(
int
k
=
0
;
k
<
4
;
k
++
)
vtk_matrix
->
SetElement
(
i
,
k
,
m
(
i
,
k
));
return
vtk_matrix
;
}
static
cv
::
Matx44f
convertToMatx
(
const
vtkSmartPointer
<
vtkMatrix4x4
>&
vtk_matrix
)
{
cv
::
Matx44f
m
;
for
(
int
i
=
0
;
i
<
4
;
i
++
)
for
(
int
k
=
0
;
k
<
4
;
k
++
)
m
(
i
,
k
)
=
vtk_matrix
->
GetElement
(
i
,
k
);
return
m
;
}
};
///////////////////////////////////////////////////////////////////////////////////////////////
/// stream accessor implementaion
vtkSmartPointer
<
vtkLODActor
>
temp_viz
::
WidgetAccessor
::
getActor
(
const
Widget
&
widget
)
{
return
widget
.
impl_
->
actor
;
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// widget implementaion
temp_viz
::
Widget
::
Widget
()
{
impl_
=
new
Impl
();
}
temp_viz
::
Widget
::
Widget
(
const
Widget
&
other
)
{
impl_
=
other
.
impl_
;
}
temp_viz
::
Widget
&
temp_viz
::
Widget
::
operator
=
(
const
Widget
&
other
)
{
if
(
this
!=
&
other
)
impl_
=
other
.
impl_
;
return
*
this
;
}
void
temp_viz
::
Widget
::
copyTo
(
Widget
&
/*dst*/
)
{
// TODO Deep copy the data if there is any
}
void
temp_viz
::
Widget
::
setColor
(
const
Color
&
color
)
{
impl_
->
setColor
(
color
);
}
void
temp_viz
::
Widget
::
setPose
(
const
Affine3f
&
pose
)
{
impl_
->
setPose
(
pose
);
}
void
temp_viz
::
Widget
::
updatePose
(
const
Affine3f
&
pose
)
{
impl_
->
updatePose
(
pose
);
}
temp_viz
::
Affine3f
temp_viz
::
Widget
::
getPose
()
const
{
return
impl_
->
getPose
();
}
modules/viz/test/test_viz3d.cpp
View file @
efa7f090
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
#include <fstream>
#include <fstream>
#include <string>
#include <string>
#include <opencv2/viz
/types
.hpp>
#include <opencv2/viz.hpp>
#include <opencv2/viz/mesh_load.hpp>
#include <opencv2/viz/mesh_load.hpp>
cv
::
Mat
cvcloud_load
()
cv
::
Mat
cvcloud_load
()
...
...
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