Ask Your Question
0

OpenCV 3.1 viz tutorial error

asked 2016-08-03 03:59:45 -0600

Nbb gravatar image

updated 2016-08-03 04:56:51 -0600

So decided to include every viz hpp file and I am getting a different error

4   IntelliSense: vtkSmartPointer is not a template c:\opencv\sources\modules\viz\include\opencv2\viz\widget_accessor.hpp   76  20  Viz
6   IntelliSense: vtkSmartPointer is not a template c:\opencv\sources\modules\viz\include\opencv2\viz\widget_accessor.hpp   81  49  Viz
5   IntelliSense: identifier "vtkProp" is undefined c:\opencv\sources\modules\viz\include\opencv2\viz\widget_accessor.hpp   76  36  Viz
2   IntelliSense: cannot open source file "vtkSmartPointer.h"   c:\opencv\sources\modules\viz\include\opencv2\viz\widget_accessor.hpp   50  1   Viz
3   IntelliSense: cannot open source file "vtkProp.h"   c:\opencv\sources\modules\viz\include\opencv2\viz\widget_accessor.hpp   51  1   Viz
Error   1   error C1083: Cannot open include file: 'vtkSmartPointer.h': No such file or directory   C:\opencv\sources\modules\viz\include\opencv2\viz\widget_accessor.hpp   50  1   Viz

So I googled up vtkSmartPointer.h and it turns out I need to install this thing called vtk (virtual toolkit). Do i really need to install another library ? Is there a way I can make this work strictly using OpenCV ????? I f-ing hate installing and setting up. I just wanna freaking code

#include <opencv2/viz/vizcore.hpp>
#include <opencv2/viz/widgets.hpp>

#include <opencv2/viz/types.hpp>
#include <opencv2/viz/viz3d.hpp>
#include <opencv2/viz/widget_accessor.hpp>

#include <opencv2/calib3d/calib3d.hpp>
#include <iostream>

using namespace cv;
using namespace std;

/**
* @function main
*/
int main()
{
    /// Create a window
    viz::Viz3d myWindow("Coordinate Frame");

    /// Add coordinate axes
    myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem());

    /// Add line to represent (1,1,1) axis
    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::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);

    /// Rodrigues vector
    Mat rot_vec = Mat::zeros(1, 3, CV_32F);
    float translation_phase = 0.0, translation = 0.0;
    while (!myWindow.wasStopped())
    {
        /* Rotation using rodrigues */
        /// Rotate around (1,1,1)
        rot_vec.at<float>(0, 0) += CV_PI * 0.01f;
        rot_vec.at<float>(0, 1) += CV_PI * 0.01f;
        rot_vec.at<float>(0, 2) += CV_PI * 0.01f;

        /// Shift on (1,1,1)
        translation_phase += CV_PI * 0.01f;
        translation = sin(translation_phase);

        Mat rot_mat;
        Rodrigues(rot_vec, rot_mat);

        /// Construct pose
        Affine3f pose(rot_mat, Vec3f(translation, translation, translation));

        myWindow.setWidgetPose("Cube Widget", pose);

        myWindow.spinOnce(1, true);
    }

    return 0;
}
edit retag flag offensive close merge delete

Comments

for various reasons, can you please replace the image with a text version ?

berak gravatar imageberak ( 2016-08-03 04:42:59 -0600 )edit

1 answer

Sort by ยป oldest newest most voted
0

answered 2016-08-03 05:21:03 -0600

berak gravatar image

updated 2016-08-03 05:24:22 -0600

" Do i really need to install another library " - yes. (and it's a MONSTER !)

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2016-08-03 03:59:45 -0600

Seen: 1,056 times

Last updated: Aug 03 '16