mirror of
https://github.com/opencv/opencv.git
synced 2024-12-01 06:49:50 +08:00
delete common.h, viz_types.hpp, rendering properties are public, setcolor in creating_widgets tutorial
This commit is contained in:
parent
9a91a12fb2
commit
fdbf20c172
@ -1,118 +0,0 @@
|
|||||||
.. _viz:
|
|
||||||
|
|
||||||
Launching Viz
|
|
||||||
*************
|
|
||||||
|
|
||||||
Goal
|
|
||||||
====
|
|
||||||
|
|
||||||
In this tutorial you will learn how to
|
|
||||||
|
|
||||||
.. container:: enumeratevisibleitemswithsquare
|
|
||||||
|
|
||||||
* Open a visualization window.
|
|
||||||
* Access a window by its name.
|
|
||||||
* Start event loop.
|
|
||||||
* Start event loop for a given amount of time.
|
|
||||||
|
|
||||||
Code
|
|
||||||
====
|
|
||||||
|
|
||||||
You can download the code from `here <../../../../samples/cpp/tutorial_code/viz/launching_viz.cpp>`_.
|
|
||||||
|
|
||||||
.. code-block:: cpp
|
|
||||||
|
|
||||||
#include <opencv2/viz.hpp>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace cv;
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @function main
|
|
||||||
*/
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
/// Create a window
|
|
||||||
viz::Viz3d myWindow("Viz Demo");
|
|
||||||
|
|
||||||
/// Start event loop
|
|
||||||
myWindow.spin();
|
|
||||||
|
|
||||||
/// Event loop is over when pressed q, Q, e, E
|
|
||||||
cout << "First event loop is over" << endl;
|
|
||||||
|
|
||||||
/// Access window via its name
|
|
||||||
viz::Viz3d sameWindow = viz::get("Viz Demo");
|
|
||||||
|
|
||||||
/// Start event loop
|
|
||||||
sameWindow.spin();
|
|
||||||
|
|
||||||
/// Event loop is over when pressed q, Q, e, E
|
|
||||||
cout << "Second event loop is over" << endl;
|
|
||||||
|
|
||||||
/// Event loop is over when pressed q, Q, e, E
|
|
||||||
/// Start event loop once for 1 millisecond
|
|
||||||
sameWindow.spinOnce(1, true);
|
|
||||||
while(!sameWindow.wasStopped())
|
|
||||||
{
|
|
||||||
/// Interact with window
|
|
||||||
|
|
||||||
/// Event loop for 1 millisecond
|
|
||||||
sameWindow.spinOnce(1, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Once more event loop is stopped
|
|
||||||
cout << "Last event loop is over" << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Explanation
|
|
||||||
===========
|
|
||||||
|
|
||||||
Here is the general structure of the program:
|
|
||||||
|
|
||||||
* Create a window.
|
|
||||||
|
|
||||||
.. code-block:: cpp
|
|
||||||
|
|
||||||
/// Create a window
|
|
||||||
viz::Viz3d myWindow("Viz Demo");
|
|
||||||
|
|
||||||
* Start event loop. This event loop will run until user terminates it by pressing **e**, **E**, **q**, **Q**.
|
|
||||||
|
|
||||||
.. code-block:: cpp
|
|
||||||
|
|
||||||
/// Start event loop
|
|
||||||
myWindow.spin();
|
|
||||||
|
|
||||||
* Access same window via its name. Since windows are implicitly shared, **sameWindow** is exactly the same with **myWindow**. If the name does not exist, a new window is created.
|
|
||||||
|
|
||||||
.. code-block:: cpp
|
|
||||||
|
|
||||||
/// Access window via its name
|
|
||||||
viz::Viz3d sameWindow = viz::get("Viz Demo");
|
|
||||||
|
|
||||||
* Start a controlled event loop. Once it starts, **wasStopped** is set to false. Inside the while loop, in each iteration, **spinOnce** is called to prevent event loop from completely stopping. Inside the while loop, user can execute other statements including those which interact with the window.
|
|
||||||
|
|
||||||
.. code-block:: cpp
|
|
||||||
|
|
||||||
/// Event loop is over when pressed q, Q, e, E
|
|
||||||
/// Start event loop once for 1 millisecond
|
|
||||||
sameWindow.spinOnce(1, true);
|
|
||||||
while(!sameWindow.wasStopped())
|
|
||||||
{
|
|
||||||
/// Interact with window
|
|
||||||
|
|
||||||
/// Event loop for 1 millisecond
|
|
||||||
sameWindow.spinOnce(1, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
Results
|
|
||||||
=======
|
|
||||||
|
|
||||||
Here is the result of the program.
|
|
||||||
|
|
||||||
.. image:: images/window_demo.png
|
|
||||||
:alt: Launching Viz
|
|
||||||
:align: center
|
|
@ -6,6 +6,34 @@ namespace cv
|
|||||||
{
|
{
|
||||||
namespace viz
|
namespace viz
|
||||||
{
|
{
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// Widget rendering properties
|
||||||
|
enum RenderingProperties
|
||||||
|
{
|
||||||
|
VIZ_POINT_SIZE,
|
||||||
|
VIZ_OPACITY,
|
||||||
|
VIZ_LINE_WIDTH,
|
||||||
|
VIZ_FONT_SIZE,
|
||||||
|
VIZ_COLOR,
|
||||||
|
VIZ_REPRESENTATION,
|
||||||
|
VIZ_IMMEDIATE_RENDERING,
|
||||||
|
VIZ_SHADING
|
||||||
|
};
|
||||||
|
|
||||||
|
enum RenderingRepresentationProperties
|
||||||
|
{
|
||||||
|
REPRESENTATION_POINTS,
|
||||||
|
REPRESENTATION_WIREFRAME,
|
||||||
|
REPRESENTATION_SURFACE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ShadingRepresentationProperties
|
||||||
|
{
|
||||||
|
SHADING_FLAT,
|
||||||
|
SHADING_GOURAUD,
|
||||||
|
SHADING_PHONG
|
||||||
|
};
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
/// The base class for all widgets
|
/// The base class for all widgets
|
||||||
class CV_EXPORTS Widget
|
class CV_EXPORTS Widget
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <opencv2/core/cvdef.h>
|
|
||||||
#include <opencv2/core.hpp>
|
|
||||||
#include <opencv2/viz/types.hpp>
|
|
||||||
|
|
||||||
namespace cv
|
|
||||||
{
|
|
||||||
namespace viz
|
|
||||||
{
|
|
||||||
enum RenderingProperties
|
|
||||||
{
|
|
||||||
VIZ_POINT_SIZE,
|
|
||||||
VIZ_OPACITY,
|
|
||||||
VIZ_LINE_WIDTH,
|
|
||||||
VIZ_FONT_SIZE,
|
|
||||||
VIZ_COLOR,
|
|
||||||
VIZ_REPRESENTATION,
|
|
||||||
VIZ_IMMEDIATE_RENDERING,
|
|
||||||
VIZ_SHADING
|
|
||||||
};
|
|
||||||
|
|
||||||
enum RenderingRepresentationProperties
|
|
||||||
{
|
|
||||||
REPRESENTATION_POINTS,
|
|
||||||
REPRESENTATION_WIREFRAME,
|
|
||||||
REPRESENTATION_SURFACE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum ShadingRepresentationProperties
|
|
||||||
{
|
|
||||||
SHADING_FLAT,
|
|
||||||
SHADING_GOURAUD,
|
|
||||||
SHADING_PHONG
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,6 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "viz_types.h"
|
|
||||||
#include <opencv2/viz/types.hpp>
|
#include <opencv2/viz/types.hpp>
|
||||||
|
|
||||||
namespace cv
|
namespace cv
|
||||||
|
@ -76,6 +76,13 @@
|
|||||||
#undef __DEPRECATED_DISABLED__
|
#undef __DEPRECATED_DISABLED__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
namespace cv
|
||||||
|
{
|
||||||
|
namespace viz
|
||||||
|
{
|
||||||
|
typedef std::map<std::string, vtkSmartPointer<vtkProp> > WidgetActorMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include "viz3d_impl.hpp"
|
#include "viz3d_impl.hpp"
|
||||||
#include <opencv2/core.hpp>
|
#include <opencv2/core.hpp>
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
#include <opencv2/viz.hpp>
|
#include <opencv2/viz.hpp>
|
||||||
#include "interactor_style.h"
|
#include "interactor_style.h"
|
||||||
#include "viz_types.h"
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
struct cv::viz::Viz3d::VizImpl
|
struct cv::viz::Viz3d::VizImpl
|
||||||
{
|
{
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "precomp.hpp"
|
|
||||||
|
|
||||||
namespace cv
|
|
||||||
{
|
|
||||||
namespace viz
|
|
||||||
{
|
|
||||||
typedef std::map<std::string, vtkSmartPointer<vtkProp> > WidgetActorMap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -44,6 +44,7 @@
|
|||||||
#include <opencv2/core.hpp>
|
#include <opencv2/core.hpp>
|
||||||
#include <opencv2/imgproc.hpp>
|
#include <opencv2/imgproc.hpp>
|
||||||
#include <opencv2/highgui.hpp>
|
#include <opencv2/highgui.hpp>
|
||||||
|
#include <opencv2/calib3d.hpp>
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -100,6 +101,7 @@ TEST(Viz_viz3d, accuracy)
|
|||||||
viz::CoordinateSystemWidget csw;
|
viz::CoordinateSystemWidget csw;
|
||||||
viz::TextWidget tw("TEST", Point(100, 100), 20);
|
viz::TextWidget tw("TEST", Point(100, 100), 20);
|
||||||
viz::CloudWidget pcw(cloud, colors);
|
viz::CloudWidget pcw(cloud, colors);
|
||||||
|
// pcw.setRenderingProperty(VIZ_LINE_WIDTH));
|
||||||
viz::CloudWidget pcw2(cloud, viz::Color::magenta());
|
viz::CloudWidget pcw2(cloud, viz::Color::magenta());
|
||||||
|
|
||||||
// viz.showWidget("line", lw);
|
// viz.showWidget("line", lw);
|
||||||
@ -135,7 +137,7 @@ TEST(Viz_viz3d, accuracy)
|
|||||||
|
|
||||||
viz::Mesh3d mesh = cv::viz::Mesh3d::loadMesh("/Users/nerei/horse.ply");
|
viz::Mesh3d mesh = cv::viz::Mesh3d::loadMesh("/Users/nerei/horse.ply");
|
||||||
|
|
||||||
viz::MeshWidget mw(mesh);
|
// viz::MeshWidget mw(mesh);
|
||||||
// viz.showWidget("mesh", mw);
|
// viz.showWidget("mesh", mw);
|
||||||
|
|
||||||
Mat img = imread("opencv.png");
|
Mat img = imread("opencv.png");
|
||||||
@ -173,6 +175,7 @@ TEST(Viz_viz3d, accuracy)
|
|||||||
//viz.showWidget("trajectory1", viz::TrajectoryWidget(trajectory, viz::Color(0,255,255), true, 0.5));
|
//viz.showWidget("trajectory1", viz::TrajectoryWidget(trajectory, viz::Color(0,255,255), true, 0.5));
|
||||||
viz.showWidget("trajectory2", viz::TrajectoryWidget(trajectory, K, 1.0, viz::Color(255,0,255)));
|
viz.showWidget("trajectory2", viz::TrajectoryWidget(trajectory, K, 1.0, viz::Color(255,0,255)));
|
||||||
|
|
||||||
|
// cv::Rodrigues2(Vec3f(), Mat());
|
||||||
|
|
||||||
|
|
||||||
// viz.showWidget("trajectory1", viz::TrajectoryWidget(trajectory/*, viz::Color::yellow()*/));
|
// viz.showWidget("trajectory1", viz::TrajectoryWidget(trajectory/*, viz::Color::yellow()*/));
|
||||||
|
@ -81,6 +81,9 @@ TriangleWidget::TriangleWidget(const Point3f &pt1, const Point3f &pt2, const Poi
|
|||||||
|
|
||||||
// Store this actor in the widget in order that visualizer can access it
|
// Store this actor in the widget in order that visualizer can access it
|
||||||
viz::WidgetAccessor::setProp(*this, actor);
|
viz::WidgetAccessor::setProp(*this, actor);
|
||||||
|
|
||||||
|
// Set the color of the widget. This has to be called after WidgetAccessor.
|
||||||
|
setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -94,7 +97,7 @@ int main()
|
|||||||
viz::Viz3d myWindow("Creating Widgets");
|
viz::Viz3d myWindow("Creating Widgets");
|
||||||
|
|
||||||
/// Create a triangle widget
|
/// Create a triangle widget
|
||||||
TriangleWidget tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0));
|
TriangleWidget tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red());
|
||||||
|
|
||||||
/// Show widget in the visualizer window
|
/// Show widget in the visualizer window
|
||||||
myWindow.showWidget("TRIANGLE", tw);
|
myWindow.showWidget("TRIANGLE", tw);
|
||||||
|
Loading…
Reference in New Issue
Block a user