VTK Learning Eleven - VTK Label One

2023-10-28 13:59
文章标签 label one learning vtk eleven

本文主要是介绍VTK Learning Eleven - VTK Label One,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VTK Learning Eleven - VTK Label One

Description

属性标签的显示。vtkTextProperty设置文字属性。vtkPointSetToLabelHierarchyvtkLabelPlacementMapper
vtkActor2D渲染文字。

Code

#include<vtkRenderWindow.h>
#include<vtkSmartPointer.h>
#include<vtkPoints.h>
#include<vtkMath.h>
#include<vtkPolyData.h>
#include<vtkCellArray.h>
#include<vtkVertex.h>
#include<vtkPolyDataMapper.h>
#include<vtkActor.h>
#include<vtkRenderWindowInteractor.h>
#include<vtkRenderer.h>
#include<vtkProperty.h>
#include<vtkNamedColors.h>
#include<vtkStringArray.h>
#include<vtkPointData.h>
#include<vtkTextProperty.h>
#include<vtkPointSetToLabelHierarchy.h>
#include<vtkLabelPlacementMapper.h>
#include<vtkActor2D.h>int main(){vtkSmartPointer<vtkPoints> ps = vtkSmartPointer<vtkPoints>::New();unsigned int GridSize = 10;vtkSmartPointer<vtkStringArray>names = vtkSmartPointer<vtkStringArray>::New();names->SetName("names");int count = 0;for ( int x = 0; x < GridSize; x++){for ( int y = 0; y < GridSize; y++){ps->InsertNextPoint(x, y, vtkMath::Random(-.25, .25));names->InsertNextValue("T"+ std::to_string(count++));}}vtkSmartPointer<vtkVertex> vertex =vtkSmartPointer<vtkVertex>::New();vertex->GetPointIds()->SetNumberOfIds(ps->GetNumberOfPoints());for (int i = 0; i<ps->GetNumberOfPoints(); i++) {vertex->GetPointIds()->SetId(i, i);}vtkSmartPointer<vtkCellArray> vertices =vtkSmartPointer<vtkCellArray>::New();vertices->InsertNextCell(vertex);vtkSmartPointer<vtkPolyData> polydata =vtkSmartPointer<vtkPolyData>::New();polydata->SetPoints(ps);polydata->SetVerts(vertices);polydata->GetPointData()->AddArray(names);vtkSmartPointer<vtkTextProperty>textProp = vtkSmartPointer<vtkTextProperty>::New();textProp->SetFontSize(20);textProp->SetColor(0, 0, 0);vtkSmartPointer<vtkPointSetToLabelHierarchy>labels = vtkSmartPointer<vtkPointSetToLabelHierarchy>::New();labels->SetInputData(polydata);labels->SetLabelArrayName("names");labels->SetTargetLabelCount(polydata->GetNumberOfPoints());labels->SetTextProperty(textProp);vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();vtkSmartPointer<vtkPolyDataMapper> pointMapper = vtkSmartPointer<vtkPolyDataMapper>::New();pointMapper->SetInputData(polydata);vtkSmartPointer<vtkActor> pointActor = vtkSmartPointer<vtkActor>::New();pointActor->GetProperty()->SetColor(1, 0, 0);pointActor->GetProperty()->SetPointSize(5);pointActor->SetMapper(pointMapper);vtkSmartPointer<vtkLabelPlacementMapper> placeMapper = vtkSmartPointer<vtkLabelPlacementMapper>::New();placeMapper->SetInputConnection(labels->GetOutputPort());vtkSmartPointer<vtkActor2D> txActor = vtkSmartPointer<vtkActor2D>::New();txActor->SetMapper(placeMapper);vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->AddActor(pointActor);renderer->AddActor2D(txActor);renderer->SetBackground(colors->GetColor3d("Mint").GetData());renderWindow->Render();renderWindowInteractor->Initialize();renderWindowInteractor->Start();return 0;
}

CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 3.3 FATAL_ERROR)
PROJECT(Text)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(Text Text.cxx)
TARGET_LINK_LIBRARIES(Text  ${VTK_LIBRARIES})

Result

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kLwejF0k-1586670128177)(images\1.png)]

这篇关于VTK Learning Eleven - VTK Label One的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293674

相关文章

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

初步了解VTK装配体

VTK还不太了解,根据资料, vtk.vtkAssembly 是 VTK库中的一个重要类,允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。 import vtkimport mathfrom vtk.util.colors import *filenames = ["cylinder.stl","sphere.stl","torus.stl"]dt = 1.0renW

pytorch torch.nn.functional.one_hot函数介绍

torch.nn.functional.one_hot 是 PyTorch 中用于生成独热编码(one-hot encoding)张量的函数。独热编码是一种常用的编码方式,特别适用于分类任务或对离散的类别标签进行处理。该函数将整数张量的每个元素转换为一个独热向量。 函数签名 torch.nn.functional.one_hot(tensor, num_classes=-1) 参数 t

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果                                                    右侧是世界坐标系中的相机与被观察物体 目录 VTK医学图像处理---世界坐标系中的相机和物体 简介 1 在三维空间中添加坐标系 2 世界坐标系中的相机 3 世界坐标系中vtkImageData的参数 总结:

leetcode#66. Plus One

题目 Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. You may assume the integer do not contain any leading zero, except the number 0 itself. The digi

004: VTK读入数据---vtkImageData详细说明

VTK医学图像处理---vtkImageData类 目录 VTK医学图像处理---vtkImageData类 简介: 1 Mricro软件的安装和使用 (1) Mricro安装 (2) Mricro转换DICOM为裸数据  2 从硬盘读取数据到vtkImageData 3 vtkImageData转RGB或RGBA格式 4 练习 总结 简介:         对于医

数据标注:批量转换json文件,出现AttributeError: module ‘labelme.utils‘ has no attribute ‘draw_label‘错误

labelme版本更换为3.11.2 "D:\Anaconda3\Lib\site-packages\labelme\utils\draw.py"缺失?: import ioimport os.path as ospimport numpy as npimport PIL.Imageimport PIL.ImageDrawimport PIL.ImageFontdef label_co

Error: label vector and instance matrix must be double的解决方法

在使用uci下载的数据时,建模时出现这个错误的解决方法 首先现在UCI上面下载数据 然后右键另存为就行了。这样我们就从UCI里面下载到了训练数据 在matlab 点 导入数据,数据类型要记得选第二个, 如果选择最后一个table就会出现这个问题 最后附上代码 %%之前先import wine.date IMPORTED DATA 设为Numeric Matrix (数值矩