当前位置:网站首页>VTK vtkcontourwidget extracts regions of interest
VTK vtkcontourwidget extracts regions of interest
2022-07-28 14:52:00 【Love the west wind】
vtkContourWidget brief introduction
It is mainly used to represent a point set , There are connections between point sets , Adjacent point , Not any point . The selection of the last point determines , Is the outline closed or open .
Use scenarios :
It can usually be used to extract regions of interest ; See the picture

official demo
#include <vtkCellArray.h>
#include <vtkContourWidget.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkMath.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkOrientedGlyphContourRepresentation.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
int main(int /* argc */, char* /* argv */[])
{
vtkNew<vtkNamedColors> colors;
// Create the contour widget
vtkNew<vtkContourWidget> contourWidget;
// Override the default representation for the contour widget to customize its
// look
vtkNew<vtkOrientedGlyphContourRepresentation> contourRepresentation;
contourRepresentation->GetLinesProperty()->SetColor(
colors->GetColor3d("Red").GetData());
contourWidget->SetRepresentation(contourRepresentation);
// Generate a set of points arranged in a circle
int numPts = 10;
vtkNew<vtkPoints> points;
for (int i = 0; i < numPts; i++)
{
// Create numPts points evenly spread around a circumference of radius 0.1
const double angle = 2.0 * vtkMath::Pi() * i / numPts;
points->InsertPoint(static_cast<vtkIdType>(i), 0.1 * cos(angle),
0.1 * sin(angle), 0.0);
}
// Create a cell array to connect the points into meaningful geometry
vtkIdType* vertexIndices = new vtkIdType[numPts + 1];
for (int i = 0; i < numPts; i++)
{
vertexIndices[i] = static_cast<vtkIdType>(i);
}
// Set the last vertex to 0; this means the last line segment will join the
// 19th point (vertices[19]) with the first one (vertices[0]), thus closing
// the circle.
vertexIndices[numPts] = 0;
vtkNew<vtkCellArray> lines;
lines->InsertNextCell(numPts + 1, vertexIndices);
// Create polydata to hold the geometry just created, and populate it
vtkNew<vtkPolyData> polydata;
polydata->SetPoints(points);
polydata->SetLines(lines);
// Create the renderer to visualize the scene
vtkNew<vtkRenderer> renderer;
renderer->SetBackground(colors->GetColor3d("MidnightBlue").GetData());
// Create the GUI window to hold the rendered scene
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("ContourWidget");
renderWindow->SetSize(600, 600);
// Create the events manager for the renderer window
vtkNew<vtkRenderWindowInteractor> interactor;
interactor->SetRenderWindow(renderWindow);
// Use the "trackball camera" interactor style, rather than the default
// "joystick camera"
vtkNew<vtkInteractorStyleTrackballCamera> style;
interactor->SetInteractorStyle(style);
// Set up the contour widget within the visualization pipeline just assembled
contourWidget->SetInteractor(interactor);
contourWidget->On(); // Turn on the interactor observer
contourWidget->Initialize(polydata);
renderer->ResetCamera(); // Reposition camera to fit the scene elements
// Start the interaction
renderWindow->Render();
interactor->Start();
return EXIT_SUCCESS;
}
边栏推荐
- [thread safety] what risks may multithreading bring?
- 面试官:ThreadLocal使用场景有哪些?内存泄露问题如何避免?
- 468产品策划与推广方案(150份)
- SSH service
- 数字化转型安全问题频发,山石网科助力数字政府建设
- linux安装mysql
- Penguin side: why not recommend using select *?
- 2022 safety officer-a certificate operation certificate examination question bank simulated examination platform operation
- 工厂模式和构造函数模式
- 2022 melting welding and thermal cutting examination questions and online simulation examination
猜你喜欢

Installing MySQL on Linux

Thoughts on the construction of some enterprise data platforms

Simple data analysis using Weka and excel

Hcip day 12

C language related programming exercises

九、uni-popup用法 下拉框底部弹窗效果
C # read INI file and key value pair operation

Summarize the knowledge points of the ten JVM modules. If you don't believe it, you still don't understand it

Focus on differentiated product design, intelligent technology efficiency improvement and literacy education around new citizen Finance

7月29日 ApacheCon|Apache Pulsar 在 vivo 的探索与实践 即将开播
随机推荐
C语言实现简单学生成绩管理系统的方法
复制excel行到指定行
用 Table 在 SwiftUI 下创建表格
看了就会的 Rainbond 入门教程
Store and guarantee rancher data based on Minio objects
@DS('slave') 多数据源兼容事务问题解决方案
Simple data analysis using Weka and excel
卡方分布和伽马函数(Chi-Square Distribution)
Log management platform of infrastructure and nail & email alarm notification
Redis-配置文件讲解
Bulk Rename Utility
String转为long 类型报错原因:要转为long必须是int、double、float型[通俗易懂]
Ability to add class @published for custom attribute wrapper types
Error reason for converting string to long type: to convert to long type, it must be int, double, float type [easy to understand]
为 @CloudStorage 添加了类 @Published 的能力
【七夕】七夕孤寡小青蛙究极版?七夕节最终章!
(function(global,factory){
如何让照片中的人物笑起来?HMS Core视频编辑服务一键微笑功能,让人物笑容更自然
It's so hot that solar power can't take off? Hello, head
7月29日 ApacheCon|Apache Pulsar 在 vivo 的探索与实践 即将开播