From: Anatoly Baksheev Date: Sat, 11 Jan 2014 20:31:45 +0000 (+0400) Subject: addeed test for text 2d/3d X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~3552^2~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=53b8218652536d58dd71eb8690fff263b6122b9a;p=platform%2Fupstream%2Fopencv.git addeed test for text 2d/3d --- diff --git a/modules/viz/include/opencv2/viz/widgets.hpp b/modules/viz/include/opencv2/viz/widgets.hpp index f745e54..75f9670 100644 --- a/modules/viz/include/opencv2/viz/widgets.hpp +++ b/modules/viz/include/opencv2/viz/widgets.hpp @@ -206,7 +206,7 @@ namespace cv class CV_EXPORTS WText : public Widget2D { public: - WText(const String &text, const Point2i &pos, int font_size = 20, const Color &color = Color::white()); + WText(const String &text, const Point &pos, int font_size = 20, const Color &color = Color::white()); void setText(const String &text); String getText() const; @@ -215,6 +215,7 @@ namespace cv class CV_EXPORTS WText3D : public Widget3D { public: + //! creates text label in 3D. If face_camera = false, text plane normal is oriented along z-axis. Use widget pose to orient it properly WText3D(const String &text, const Point3d &position, double text_scale = 1., bool face_camera = true, const Color &color = Color::white()); void setText(const String &text); diff --git a/modules/viz/src/shapes.cpp b/modules/viz/src/shapes.cpp index 5e76286..2e36a6d 100644 --- a/modules/viz/src/shapes.cpp +++ b/modules/viz/src/shapes.cpp @@ -135,8 +135,12 @@ cv::viz::WPlane::WPlane(const Vec4d& coefs, double size, const Color &color) Vec3d p_center; plane->GetOrigin(p_center.val); + + vtkSmartPointer filter = PlaneUtils::setSize(p_center, plane->GetOutputPort(), size); + filter->Update(); + vtkSmartPointer mapper = vtkSmartPointer::New(); - mapper->SetInputConnection(PlaneUtils::setSize(p_center, plane->GetOutputPort(), size)->GetOutputPort()); + VtkUtils::SetInputData(mapper, filter->GetOutput()); vtkSmartPointer actor = vtkSmartPointer::New(); actor->SetMapper(mapper); @@ -571,6 +575,7 @@ cv::viz::WText3D::WText3D(const String &text, const Point3d &position, double te actor->SetMapper(mapper); actor->SetPosition(position.x, position.y, position.z); actor->SetScale(text_scale); + actor->GetProperty()->LightingOff(); WidgetAccessor::setProp(*this, actor); } @@ -579,7 +584,7 @@ cv::viz::WText3D::WText3D(const String &text, const Point3d &position, double te void cv::viz::WText3D::setText(const String &text) { - vtkFollower *actor = vtkFollower::SafeDownCast(WidgetAccessor::getProp(*this)); + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); CV_Assert("This widget does not support text." && actor); // Update text source @@ -613,7 +618,7 @@ template<> cv::viz::WText3D cv::viz::Widget::cast() /////////////////////////////////////////////////////////////////////////////////////////////// /// text widget implementation -cv::viz::WText::WText(const String &text, const Point2i &pos, int font_size, const Color &color) +cv::viz::WText::WText(const String &text, const Point &pos, int font_size, const Color &color) { vtkSmartPointer actor = vtkSmartPointer::New(); actor->SetPosition(pos.x, pos.y); diff --git a/modules/viz/test/tests_simple.cpp b/modules/viz/test/tests_simple.cpp index 58e909f..fe5cf33 100644 --- a/modules/viz/test/tests_simple.cpp +++ b/modules/viz/test/tests_simple.cpp @@ -291,6 +291,7 @@ TEST(Viz, DISABLED_show_image_3d) TEST(Viz, show_simple_widgets) { Viz3d viz("show_simple_widgets"); + viz.showWidget("coos", WCoordinateSystem()); viz.showWidget("cube", WCube()); viz.showWidget("cub0", WCube(Vec3d::all(-1.0), Vec3d::all(-0.5), false, Color::indigo())); @@ -301,6 +302,26 @@ TEST(Viz, show_simple_widgets) viz.showWidget("cyl0", WCylinder(Vec3d(-0.5, 0.5, -0.5), Vec3d(0.5, 0.5, -0.5), 0.125, 30, Color::brown())); viz.showWidget("con0", WCone(0.25, 0.125, 6, Color::azure())); viz.showWidget("con1", WCone(0.125, Point3d(0.5, -0.5, 0.5), Point3d(0.5, -1.0, 0.5), 6, Color::turquoise())); + + viz.showWidget("text2d", WText("Simple text", Point(20, 20), 20, Color::green())); + + viz.showWidget("text3d", WText3D("Simple 3D text", Point3d( 0.5, 0.5, 0.5), 0.125, false, Color::green())); + + viz.spinOnce(1500, true); + viz.getWidget("text2d").cast().setText("New simple text"); + viz.getWidget("text3d").cast().setText("Updated text 3D"); + viz.spin(); +} + +TEST(Viz, show_follower) +{ + Viz3d viz("show_follower"); + + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("cube", WCube()); + viz.showWidget("t3d_2", WText3D("Simple 3D follower", Point3d(-0.5, -0.5, 0.5), 0.125, true, Color::green())); + viz.spinOnce(1500, true); + //viz.getWidget("t3d_2").cast().setText("Updated follower 3D"); viz.spin(); }