diff --git a/modules/viz/include/opencv2/viz/widgets.hpp b/modules/viz/include/opencv2/viz/widgets.hpp index 42e0f1968..ea43976dd 100644 --- a/modules/viz/include/opencv2/viz/widgets.hpp +++ b/modules/viz/include/opencv2/viz/widgets.hpp @@ -132,6 +132,9 @@ namespace cv void setColor(const Color &color); }; + ///////////////////////////////////////////////////////////////////////////// + /// Simple widgets + class CV_EXPORTS WLine : public Widget3D { public: @@ -175,6 +178,9 @@ namespace cv WCube(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame = true, const Color &color = Color::white()); }; + ///////////////////////////////////////////////////////////////////////////// + /// Compond widgets + class CV_EXPORTS WCoordinateSystem : public Widget3D { public: @@ -268,6 +274,9 @@ namespace cv float sphere_radius = 0.007f, const Color &line_color = Color::white(), const Color &sphere_color = Color::white()); }; + ///////////////////////////////////////////////////////////////////////////// + /// Cloud widgets + class CV_EXPORTS WCloud: public Widget3D { public: @@ -300,6 +309,9 @@ namespace cv WMesh(const Mesh3d &mesh); }; + ///////////////////////////////////////////////////////////////////////////// + /// Utility exports + template<> CV_EXPORTS Widget2D Widget::cast<Widget2D>(); template<> CV_EXPORTS Widget3D Widget::cast<Widget3D>(); template<> CV_EXPORTS WLine Widget::cast<WLine>(); diff --git a/modules/viz/src/precomp.hpp b/modules/viz/src/precomp.hpp index 1beb43587..5994aaa1b 100644 --- a/modules/viz/src/precomp.hpp +++ b/modules/viz/src/precomp.hpp @@ -94,7 +94,6 @@ #include <vtkInteractorStyleTrackballCamera.h> #include <vtkProperty.h> #include <vtkCamera.h> -#include <vtkObjectFactory.h> #include <vtkPlanes.h> #include <vtkImageFlip.h> #include <vtkRenderWindow.h> @@ -111,6 +110,12 @@ #include <vtkPolyDataNormals.h> #include <vtkAlgorithmOutput.h> #include <vtkImageMapper.h> +#include <vtkPoints.h> +#include <vtkInformation.h> +#include <vtkInformationVector.h> +#include <vtkObjectFactory.h> +#include <vtkPolyDataAlgorithm.h> +#include <vtkMergeFilter.h> #include <opencv2/core.hpp> #include <opencv2/viz.hpp> diff --git a/modules/viz/src/viz3d_impl.cpp b/modules/viz/src/viz3d_impl.cpp index b1173f645..af3f93b71 100644 --- a/modules/viz/src/viz3d_impl.cpp +++ b/modules/viz/src/viz3d_impl.cpp @@ -48,9 +48,9 @@ #include "precomp.hpp" -vtkRenderWindowInteractor* vtkRenderWindowInteractorFixNew(); -#if 1 || !defined __APPLE__ +#if (1 || !defined __APPLE__) && !defined _MSC_VER +vtkRenderWindowInteractor* vtkRenderWindowInteractorFixNew(); vtkRenderWindowInteractor* vtkRenderWindowInteractorFixNew() { return vtkRenderWindowInteractor::New(); @@ -79,7 +79,11 @@ cv::viz::Viz3d::VizImpl::VizImpl(const String &name) style_->UseTimersOn(); ///////////////////////////////////////////////// +#if (1 || !defined __APPLE__) && !defined _MSC_VER interactor_ = vtkSmartPointer<vtkRenderWindowInteractor>::Take(vtkRenderWindowInteractorFixNew()); +#else + interactor_ = vtkSmartPointer<vtkRenderWindowInteractor>::New(); +#endif window_->AlphaBitPlanesOff(); window_->PointSmoothingOff();