From eafcdc004db0cbc550f1277a76ee3f825cca9444 Mon Sep 17 00:00:00 2001 From: ozantonkal Date: Sun, 7 Jul 2013 21:19:21 +0300 Subject: [PATCH] plane widget size --- modules/viz/include/opencv2/viz/widgets.hpp | 4 ++-- modules/viz/src/simple_widgets.cpp | 12 +++++++----- modules/viz/test/test_viz3d.cpp | 6 +++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/modules/viz/include/opencv2/viz/widgets.hpp b/modules/viz/include/opencv2/viz/widgets.hpp index ea615a1842..cc70d268a8 100644 --- a/modules/viz/include/opencv2/viz/widgets.hpp +++ b/modules/viz/include/opencv2/viz/widgets.hpp @@ -46,8 +46,8 @@ namespace temp_viz class CV_EXPORTS PlaneWidget : public Widget { public: - PlaneWidget(const Vec4f& coefs, const Color &color = Color::white()); - PlaneWidget(const Vec4f& coefs, const Point3f& pt, const Color &color = Color::white()); + 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()); }; class CV_EXPORTS SphereWidget : public Widget diff --git a/modules/viz/src/simple_widgets.cpp b/modules/viz/src/simple_widgets.cpp index ffba14ec96..bcc8beaf14 100644 --- a/modules/viz/src/simple_widgets.cpp +++ b/modules/viz/src/simple_widgets.cpp @@ -33,23 +33,24 @@ float temp_viz::LineWidget::getLineWidth() /////////////////////////////////////////////////////////////////////////////////////////////// /// plane widget implementation -temp_viz::PlaneWidget::PlaneWidget(const Vec4f& coefs, const Color &color) +temp_viz::PlaneWidget::PlaneWidget(const Vec4f& coefs, double size, const Color &color) { vtkSmartPointer plane = vtkSmartPointer::New (); plane->SetNormal (coefs[0], coefs[1], coefs[2]); double norm = cv::norm(cv::Vec3f(coefs.val)); plane->Push (-coefs[3] / norm); - + vtkSmartPointer mapper = vtkSmartPointer::New (); mapper->SetInput(plane->GetOutput ()); - + vtkSmartPointer actor = WidgetAccessor::getActor(*this); actor->SetMapper(mapper); - + actor->SetScale(size); + setColor(color); } -temp_viz::PlaneWidget::PlaneWidget(const Vec4f& coefs, const Point3f& pt, const Color &color) +temp_viz::PlaneWidget::PlaneWidget(const Vec4f& coefs, const Point3f& pt, double size, const Color &color) { vtkSmartPointer plane = vtkSmartPointer::New (); cv::Point3f coefs3(coefs[0], coefs[1], coefs[2]); @@ -65,6 +66,7 @@ temp_viz::PlaneWidget::PlaneWidget(const Vec4f& coefs, const Point3f& pt, const vtkSmartPointer actor = WidgetAccessor::getActor(*this); actor->SetMapper(mapper); + actor->SetScale(size); setColor(color); } diff --git a/modules/viz/test/test_viz3d.cpp b/modules/viz/test/test_viz3d.cpp index f89635f48f..d9d6837c0a 100644 --- a/modules/viz/test/test_viz3d.cpp +++ b/modules/viz/test/test_viz3d.cpp @@ -91,7 +91,7 @@ TEST(Viz_viz3d, accuracy) int col_red = 0; temp_viz::LineWidget lw(cv::Point3f(0.0,0.0,0.0), cv::Point3f(4.0,4.0,4.0), temp_viz::Color(0,255,0)); - temp_viz::PlaneWidget pw(cv::Vec4f(0.0,1.0,2.0,3.0)); + temp_viz::PlaneWidget pw(cv::Vec4f(0.0,1.0,2.0,3.0), 5.0); temp_viz::SphereWidget sw(cv::Point3f(0,0,0), 0.5); temp_viz::ArrowWidget aw(cv::Point3f(0,0,0), cv::Point3f(1,1,1), temp_viz::Color(255,0,0)); temp_viz::CircleWidget cw(cv::Point3f(0,0,0), 0.5, 0.01, temp_viz::Color(0,255,0)); @@ -100,10 +100,10 @@ TEST(Viz_viz3d, accuracy) temp_viz::CoordinateSystemWidget csw(1.0f, cv::Affine3f::Identity()); // v.showWidget("line", lw); -// v.showWidget("plane", pw); + v.showWidget("plane", pw); // v.showWidget("sphere", sw); // v.showWidget("arrow", aw); - v.showWidget("circle", cw); +// v.showWidget("circle", cw); // v.showWidget("cylinder", cyw); // v.showWidget("cube", cuw); v.showWidget("coordinateSystem", csw);