VTK 数据处理:特征边提取

基于vtk实现两个物体的碰撞检测以及踩坑注意事项。 vtkpolydata碰撞检测 阅读详情

VTK 数据处理:特征边提取

原理

VTK 的特征边提取只针对 PolyData,属于拓扑操作。

可以提取出 4 种类型的边:

  1. 边界边:只被 1 个网格使用的边;
  2. 流形边:被 2 个网格使用的边;
  3. 非流形边:被 2 个以上网格使用的边,一般不会在 PolyData 中出现;
  4. 特征边:属于流形边的一种,当一条流形边关联的两个面片的夹角大于特征角的话,它就是特征边。

实例 1:边界边提取

本实例创建了一个 vtkDiskSource 对象 disk,通过 vtkFeatureEdges 类提取 disk 的边界边,并设置不提取流形边、非流形边和特征边,并显示边界边的颜色以作区分。

VTKBoundaryEdge.h:

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_VTKFeatureEdge.h"

#include <QVTKOpenGLNativeWidget.h>

class VTKBoundaryEdge : public QMainWindow
{
	Q_OBJECT

public:
	VTKBoundaryEdge(QWidget* parent = nullptr);
	~VTKBoundaryEdge();

private:
	Ui::VTKFeatureEdgeClass ui;

	QVTKOpenGLNativeWidget* _pVTKWidget = nullptr;
};

VTKBoundaryEdge.cpp:

#include "VTKBoundaryEdge.h"

#include <vtkDiskSource.h>
#include <vtkPointData.h>
#include <vtkCellData.h>
#include <vtkPolyData.h>
#include <vtkFeatureEdges.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>

VTKBoundaryEdge::VTKBoundaryEdge(QWidget* parent) : QMainWindow(parent)
{
	ui.setupUi(this);

	_pVTKWidget = new QVTKOpenGLNativeWidget();
	this->setCentralWidget(_pVTKWidget);

	vtkNew<vtkRenderer> renderer;
	this->_pVTKWidget->renderWindow()->AddRenderer(renderer);
	this->_pVTKWidget->renderWindow()->Render();

	vtkNew<vtkDiskSource> disk;
	disk->Update();

	vtkNew<vtkFeatureEdges> featureEdges;
	featureEdges->SetInputConnection(disk->GetOutputPort());
	featureEdges->BoundaryEdgesOn(); // 提取边界边设置打开
	featureEdges->ManifoldEdgesOff();
	featureEdges->NonManifoldEdgesOff();
	featureEdges->FeatureEdgesOff();
	featureEdges->ColoringOn(); // 显示颜色

	vtkNew<vtkPolyDataMapper> diskMapper;
	diskMapper->SetInputConnection(disk->GetOutputPort());
	vtkNew<vtkPolyDataMapper> edgeMapper;
	edgeMapper->SetInputConnection(featureEdges->GetOutputPort());

	vtkNew<vtkActor> diskActor;
	diskActor->SetMapper(diskMapper);
	vtkNew<vtkActor> edgeActor;
	edgeActor->SetMapper(edgeMapper);

	renderer->AddActor(diskActor);
	renderer->AddActor(edgeActor);
}

VTKBoundaryEdge::~VTKBoundaryEdge()
{
}

运行结果:

在这里插入图片描述

实例 2:模型特征边提取

前面提到特征边的识别取决于两个面片的夹角,如下图所示,指针指着的角就是夹角,VTK 默认将该角大于 30 度的都视为特征边。可以看出,连续性不是很好的边都被视为特征边。

在这里插入图片描述

本实例使用 vtkBYUReader 读取了一个牛的模型,并用 vtkFeatureEdges 类提取了模型的特征边,并设置不提取流形边、非流形边和边界边,并显示特征边的颜色以作区分。

VTKFeatureEdge.h:

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_VTKFeatureEdge.h"

#include <QVTKOpenGLNativeWidget.h>

class VTKFeatureEdge : public QMainWindow
{
	Q_OBJECT

public:
	VTKFeatureEdge(QWidget* parent = nullptr);
	~VTKFeatureEdge();

private:
	Ui::VTKFeatureEdgeClass ui;

	QVTKOpenGLNativeWidget* _pVTKWidget = nullptr;
};

VTKFeatureEdge.cpp:

#include "VTKFeatureEdge.h"

#include <vtkBYUReader.h>
#include <vtkPointData.h>
#include <vtkCellData.h>
#include <vtkPolyData.h>
#include <vtkFeatureEdges.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>

VTKFeatureEdge::VTKFeatureEdge(QWidget* parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	_pVTKWidget = new QVTKOpenGLNativeWidget();
	this->setCentralWidget(_pVTKWidget);

	vtkNew<vtkRenderer> renderer;
	this->_pVTKWidget->renderWindow()->AddRenderer(renderer);
	this->_pVTKWidget->renderWindow()->Render();

	vtkNew<vtkBYUReader> reader;
	reader->SetFileName("cow.g");
	reader->Update();

	vtkNew<vtkFeatureEdges> featureEdges;
	featureEdges->SetInputConnection(reader->GetOutputPort());
	featureEdges->BoundaryEdgesOff();
	featureEdges->ManifoldEdgesOn(); // 提取特征边设置打开
	featureEdges->NonManifoldEdgesOff();
	featureEdges->FeatureEdgesOff();
	featureEdges->ColoringOn(); // 显示颜色

	vtkNew<vtkPolyDataMapper> cowMapper;
	cowMapper->SetInputConnection(reader->GetOutputPort());
	vtkNew<vtkPolyDataMapper> edgeMapper;
	edgeMapper->SetInputConnection(featureEdges->GetOutputPort());

	vtkNew<vtkActor> cowActor;
	cowActor->SetMapper(cowMapper);
	vtkNew<vtkActor> edgeActor;
	edgeActor->SetMapper(edgeMapper);

	renderer->AddActor(cowActor);
	renderer->AddActor(edgeActor);
}

VTKFeatureEdge::~VTKFeatureEdge()
{}

实例 3:利用 vtkFeatureEdges 提取的边界补洞

建立一个 vtkPlane 类对象作为截面, 设置好 plane 的法向量。利用 vtkClipPolyData 类将模型作为输入,将 plane 设为 clipper 的截取函数。再用 vtkFeatureEdges 类提取截取后模型 clipper 的边界边。将边界边作为 vtkStripper 类对象 boundaryStrips 的输入,将 featureEdges 生成的三角片连接成三角带,再转换成多边形数据 boundaryPolyData。最后把 clipper、featureEdges、boundaryPolyData 全部显示出来。

#include "VTKFeatureEdge.h"

#include <vtkBYUReader.h>
#include <vtkPlane.h>
#include <vtkPointData.h>
#include <vtkCellData.h>
#include <vtkPolyData.h>
#include <vtkClipPolyData.h>
#include <vtkFeatureEdges.h>
#include <vtkStripper.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>

VTKFeatureEdge::VTKFeatureEdge(QWidget* parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	_pVTKWidget = new QVTKOpenGLNativeWidget();
	this->setCentralWidget(_pVTKWidget);

	vtkNew<vtkRenderer> renderer;
	this->_pVTKWidget->renderWindow()->AddRenderer(renderer);
	this->_pVTKWidget->renderWindow()->Render();

	vtkNew<vtkBYUReader> reader;
	reader->SetFileName("cow.g");
	reader->Update();

	// 截面
	vtkNew<vtkPlane> plane;
	plane->SetOrigin(reader->GetOutput()->GetCenter());
	plane->SetNormal(1.0, -1.0, -1.0); // 设置截面的法向量

	// 截取模型
	vtkNew<vtkClipPolyData> clipper;
	clipper->SetInputData(reader->GetOutput());
	clipper->SetClipFunction(plane); // 将 plane 设为 clipper 的截取函数
	clipper->SetValue(0.0);

	vtkNew<vtkFeatureEdges> featureEdges;
	featureEdges->SetInputConnection(clipper->GetOutputPort());
	featureEdges->BoundaryEdgesOn();
	featureEdges->ManifoldEdgesOff(); // 提取特征边设置打开
	featureEdges->NonManifoldEdgesOff();
	featureEdges->FeatureEdgesOff();
	featureEdges->ColoringOn(); // 显示颜色

	// 建立三角带对象
	vtkNew<vtkStripper> boundaryStrips;
	boundaryStrips->SetInputConnection(featureEdges->GetOutputPort()); // 将 featureEdges 生成的三角片连接成三角带
	boundaryStrips->Update();

	vtkNew<vtkPolyData> boundaryPolyData;
	boundaryPolyData->SetPoints(boundaryStrips->GetOutput()->GetPoints());
	boundaryPolyData->SetPolys(boundaryStrips->GetOutput()->GetLines());

	vtkNew<vtkPolyDataMapper> clipperMapper;
	clipperMapper->SetInputConnection(clipper->GetOutputPort());
	vtkNew<vtkPolyDataMapper> edgeMapper;
	edgeMapper->SetInputConnection(featureEdges->GetOutputPort());
	vtkNew<vtkPolyDataMapper> boundaryMapper;
	boundaryMapper->SetInputData(boundaryPolyData);

	vtkNew<vtkActor> clipperActor;
	clipperActor->SetMapper(clipperMapper);
	vtkNew<vtkActor> edgeActor;
	edgeActor->SetMapper(edgeMapper);
	vtkNew<vtkActor> boundaryActor;
	boundaryActor->SetMapper(boundaryMapper);

	renderer->AddActor(clipperActor);
	renderer->AddActor(edgeActor);
	renderer->AddActor(boundaryActor);
}

VTKFeatureEdge::~VTKFeatureEdge()
{}

运行结果:

在这里插入图片描述

实例 4:利用 vtkFillHolesFilter 补洞

vtkFillHolesFilter 是 VTK 中用于自动填充三角网格模型中洞的过滤器。vtkFillHolesFilter 支持多种数据格式,包括 vtkPolyData、vtkUnstructuredGrid、vtkStructuredGrid、vtkImageData 等。它还支持多种洞填充算法,包括 Delaunay 三角剖分、路径填充、平面填充等。使用 vtkFillHolesFilter 进行填洞时,可以保持原始模型的拓扑结构,避免生成不良的三角形。

vtkFillHolesFilter 的内部执行过程是首先检测出网格中的所有边界边,然后找出这些边界边中的每一个闭合回路,最后将这些闭合回路进行三角化(即生成三角网格)以实现填补的目的。这个类也是非常简单的,只需要设置需要填补的网格数据即可。

需要注意的是,有些边界的闭合回路是不需要三角化的,例如一个平面网格,若填补其四周的边界边,则会与原网格产生覆盖。vtkFillHolesFilters 中的 SetHoleSize() 函数可用于控制需要修补的漏洞面积的最大值,大于该值的漏洞则不需要填补处理。

#include "VTKFeatureEdge.h"

#include <vtkBYUReader.h>
#include <vtkPlane.h>
#include <vtkPointData.h>
#include <vtkCellData.h>
#include <vtkPolyData.h>
#include <vtkClipPolyData.h>
#include <vtkFeatureEdges.h>
#include <vtkStripper.h>
#include <vtkFillHolesFilter.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>

VTKFeatureEdge::VTKFeatureEdge(QWidget* parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	_pVTKWidget = new QVTKOpenGLNativeWidget();
	this->setCentralWidget(_pVTKWidget);

	vtkNew<vtkRenderer> renderer;
	this->_pVTKWidget->renderWindow()->AddRenderer(renderer);
	this->_pVTKWidget->renderWindow()->Render();

	vtkNew<vtkBYUReader> reader;
	reader->SetFileName("cow.g");
	reader->Update();

	// 截面
	vtkNew<vtkPlane> plane;
	plane->SetOrigin(reader->GetOutput()->GetCenter());
	plane->SetNormal(1.0, -1.0, -1.0); // 设置截面的法向量

	// 截取模型
	vtkNew<vtkClipPolyData> clipper;
	clipper->SetInputData(reader->GetOutput());
	clipper->SetClipFunction(plane); // 将 plane 设为 clipper 的截取函数
	clipper->SetValue(0.0);

	/*
	vtkNew<vtkFeatureEdges> featureEdges;
	featureEdges->SetInputConnection(clipper->GetOutputPort());
	featureEdges->BoundaryEdgesOn();
	featureEdges->ManifoldEdgesOff(); // 提取特征边设置打开
	featureEdges->NonManifoldEdgesOff();
	featureEdges->FeatureEdgesOff();
	featureEdges->ColoringOn(); // 显示颜色

	// 建立三角带对象
	vtkNew<vtkStripper> boundaryStrips;
	boundaryStrips->SetInputConnection(featureEdges->GetOutputPort()); // 将 featureEdges 生成的三角片连接成三角带
	boundaryStrips->Update();

	vtkNew<vtkPolyData> boundaryPolyData;
	boundaryPolyData->SetPoints(boundaryStrips->GetOutput()->GetPoints());
	boundaryPolyData->SetPolys(boundaryStrips->GetOutput()->GetLines());

	vtkNew<vtkPolyDataMapper> clipperMapper;
	clipperMapper->SetInputConnection(clipper->GetOutputPort());
	vtkNew<vtkPolyDataMapper> edgeMapper;
	edgeMapper->SetInputConnection(featureEdges->GetOutputPort());
	vtkNew<vtkPolyDataMapper> boundaryMapper;
	boundaryMapper->SetInputData(boundaryPolyData);

	vtkNew<vtkActor> clipperActor;
	clipperActor->SetMapper(clipperMapper);
	vtkNew<vtkActor> edgeActor;
	edgeActor->SetMapper(edgeMapper);
	vtkNew<vtkActor> boundaryActor;
	boundaryActor->SetMapper(boundaryMapper);

	renderer->AddActor(clipperActor);
	renderer->AddActor(edgeActor);
	renderer->AddActor(boundaryActor);
	*/

	vtkNew<vtkFillHolesFilter> fillHolesFilter;
	fillHolesFilter->SetInputConnection(clipper->GetOutputPort());
	fillHolesFilter->SetHoleSize(1000.0); // 大于该值的漏洞则不需要填补处理

	vtkNew<vtkPolyDataMapper> fillHolesMapper;
	fillHolesMapper->SetInputConnection(fillHolesFilter->GetOutputPort());

	vtkNew<vtkActor> fillHolesActor;
	fillHolesActor->SetMapper(fillHolesMapper);

	renderer->AddActor(fillHolesActor);
}

VTKFeatureEdge::~VTKFeatureEdge()
{}

运行结果:

在这里插入图片描述

PCL 、CloudCompare 、VTK简单介绍 为方便以后学习现在总结下今天看到的知识 PCL(Point Cloud Library),点云库,是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。可在Windows、Linux 多种操作系统平台系统上运行。OpenCV处理2D,PCL处理3D。 ... 阅读详情

相关推荐

VTK编程:Visualization Toolkit介绍

VTK(Visualization Toolkit)是由美国Kitware公司开发的开源可视化系统,主要用于:3D计算机图形渲染,科学数据可视化,医学影像处理,地理信息系统

倔强老吕的博客 1537

VTK笔记——提取边界(vtkFeatureEdges)

vtkFeatureEdges,VTK的一个类,主要用于边缘提取。 提取的边缘包括: 1)边界(boundary),只被一个多边形使用的边,或者直线单元; 2)非流行(non-manifold),被三个以上的多边形共用的边; 3)特征边(feature edges),被两个三角形使用且二面角大于特征角的边; 4)流行边(manifold edges),只被两个多边形使用的边。

Andy的专栏 7516

VTK入门 1--基础学习

一、VTK简介 Vtk,(visualization toolkit)是一个开源的免费软件系统、跨平台、支持并行处理,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk。 二、VTK应用 VT...

勉強 2151

vtk Edges 特征边 提取 网格封闭性检测

vtkFeatureEdges,VTK的一个类,用于特征边界提取 提取的边界包括: 1)边界(boundary),只被一个多边形使用的边,或者直线单元; 2)非流行(non-manifold),被三个以上的多边形共用的边; 3)特征边(feature edges),被两个三角形使用且二面角大于特征角的边; 4)流行边(manifold edges),只被两个多边形使用的边。

q610098308的专栏 1654

【VTKExamples::Meshes】第十九期 BoundaryEdges

本文分享VTK样例BoundaryEdges,并解析vtkFeatureEdges,希望对各位小伙伴有所帮助!

qq_40041064的博客 378

VTK局部网格平滑实战:基于特征识别与权重控制的噪声去除方案

在三维数据处理与科学计算可视化领域,网格平滑是一项基础且关键的技术,其核心原理是通过调整网格顶点的位置,使表面几何趋于光顺,常用于去除扫描噪声、改善网格质量。拉普拉斯平滑及其变种是经典的实现方法,通过迭代使顶点向其邻域质心移动。这项技术的核心价值在于能在保留模型关键特征(如锐边、棱角)的前提下,有效消除局部瑕疵,这对于后续的有限元分析、3D打印等工程应用至关重要。针对STL、OBJ等格式的三角网格,全局平滑常导致特征模糊,因此需引入局部性控制。本文深入探讨了基于VTK的局部平滑方案,重点结合曲率计算与特征边

weixin_42526101的博客 236

vtkFeatureEdges 类简介

vtkFeatureEdges 【类说明】 提取多边形数据(polygonal data)的边界,非流行、锋利的边缘。 该类是针对输入数据为多边形几何数据的滤波器,提取特定类型的边缘数据。 这些边缘可以是: 一个多边形的边界 boundary 或者一个 line cell;非流形数据 - 三个或者更多的多边形数据;特征边(两个三角形的边缘, 三角形的二面角大于特征角)流形边(

Jane_yuhui的专栏 2022

VTK与PCL实现的3D多视图窗口分割

VTK(Visualization Toolkit)是一个开源的、跨平台的软件系统,用于3D计算机图形学、图像处理和可视化。它支持广泛的可视化算法,包括标量、向量、复杂数据的体绘制、图绘制等,并提供了丰富的API接口,使得开发者能够快速地开发出交互式的科学可视化应用程序。点云数据是一种由大量点组成的三维表示形式,广泛应用于3D扫描、机器人导航、虚拟现实等领域。PCL(Point Cloud Library)是一个独立的开源库,专门用于2D/3D图像处理和点云处理。

weixin_42393362的博客 1075

VTK多边形网格特征提取利器vtkFeatureEdges全解析

在网格数据处理中,特征提取常被简单套用图像或点云算法,但三角网格依赖拓扑邻域而非规则邻域,需要专用工具。vtkFeatureEdges是VTK中专门针对多边形网格设计的特征提取类,它基于边被面片共享的拓扑关系,将网格边分类为边界边、特征边、非流形边和流形边,并通过FeatureAngle二面角阈值识别棱线折痕。作为轻量级管道算法,它既能输出轮廓线用于模型分割与配准,也能配合ColoringOn完成网格拓扑体检,保护硬边以支持网格简化,并可与Qt滑块交互实现实时调参。掌握vtkFeatureEdges的参数逻

weixin_42602726的博客 182

VTK三维体绘制实战教程

随着计算能力的不断提升,三维可视化技术在科学计算、医学成像、工程设计等多个领域变得日益重要。VTK(Visualization Toolkit)是一个开源的、跨平台的软件系统,专为三维计算机图形学、图像处理和可视化领域而设计。VTK不仅提供了丰富的数据类型,如多边形网格、体素数据等,还支持复杂的可视化算法,包括表面渲染、体积渲染、矢量可视化等多种方式。它能够生成高质量的二维和三维图形,支持交互式可视化应用程序的设计。

weixin_32999557的博客 1124

深入掌握利用VTK的三维重建技术

VTK(Visualization Toolkit)是一个开源的、功能强大的跨平台软件系统,用于三维计算机图形学、图像处理和可视化。它支持多种编程语言,如C++、Python和Java,且在科学可视化领域中得到了广泛的应用。VTK不仅能够处理点云、多边形网格、体数据等,而且它还集成了许多高级的可视化算法,比如体绘制、流线、表面重建等。三维重建是VTK的一个重要应用,它通常指的是从二维数据中恢复三维几何结构的过程。这一过程在医学影像分析、逆向工程、质量检测以及数字娱乐等众多领域有着广泛的应用。

weixin_42593130的博客 694

VTK入门:用vtkGeometryFilter轻松搞定3D数据的“表面提取”与格式转换

VTK入门:vtkGeometryFilter简化3D数据处理 本文介绍了VTK中vtkGeometryFilter工具的核心功能与应用场景,帮助用户轻松处理3D数据。该工具主要实现两大功能:一是从各种格式的3D数据中提取边界表面(如CT体数据转多边形模型),二是支持按ID范围或空间区域裁剪数据。文章详细讲解了5个实用特性,包括保留拓扑连接、排除重复面等,并提供了关键参数说明和调优建议。最后通过一个CT数据表面提取的完整代码示例,展示了从数据加载到渲染显示的全流程,帮助读者快速上手这一实用工具。

dengbiwei的博客 968

VTK可视化工具包:从源码到应用.zip

简而言之,VTK是一个功能强大的可视化工具库,用于帮助开发者和科学家创建各种类型的可视化应用程序。它强大的模块化设计和灵活的数据模型使其在IT和相关行业中成为了一个非常重要的工具。随着信息技术的快速发展,可视化技术不断进步,VTK-8.0.1版本对核心功能进行了显著增强。这些增强主要体现在以下几个方面:性能提升:对关键渲染和数据处理算法进行了优化,显著提升了运行效率,特别是在大规模数据集处理时。改进的渲染管线。

weixin_36474001的博客 1012

ParaView与VTK深度整合:解锁高级数据处理技巧

ParaView是一款基于VTK(Visualization Toolkit)的强大数据可视化与分析应用程序,它将VTK的强大功能与用户友好的界面完美结合,为科研人员和工程师提供了高效处理复杂数据的解决方案。无论是流体动力学模拟、医学影像分析还是气象数据可视化,ParaView与VTK的深度整合都能帮助用户轻松应对各种数据挑战。 ## 一、ParaView与VTK整合的核心优势 ParaVie

gitblog_00682的博客 800

VTK-8.2.0源码包完整指南

VTK(Visualization Toolkit)是一个开源的跨平台软件系统,用于3D计算机图形学、图像处理和可视化的应用开发。它提供了丰富的工具和库,支持数据的可视化、图形用户界面、图像处理、数据处理、可视化管道和高级渲染技术等。VTK被广泛应用于医疗成像、地质勘探、气象模拟、物理建模和工程仿真等众多领域。由于其模块化的架构和丰富的功能,VTK成为许多工程师和科研人员进行数据可视化研究和开发的首选工具。

weixin_42518874的博客 921

VTK应用CGAL布尔运算、三角剖分、补洞、模型偏置(膨胀)降采样、骨架提取

只要你的工程有VTK、CGAL5.5环境就可以使用。

VTK简介

VTK(Visualization Toolkit)是一个用于3D计算机图形学、图像处理和可视化的开源软件系统。它提供了大量的算法和工具,使得开发者能够创建复杂的3D图形、进行数据分析和可视化。VTK广泛应用于科学计算、工程设计、医学图像处理等领域。总之,VTK是一个功能强大的开源可视化工具包,它提供了丰富的算法和工具,使得开发者能够创建高质量的3D图形和进行数据可视化。无论是科学计算、工程设计还是医学图像处理等领域,VTK都是一个不可或缺的工具。

浩瀚之水的专栏 1444

EDF Browser使用说明和技巧

edf browser使用说明和一些小技巧

Erhu_666的博客 8321

VTK学习笔记(十九)vtk polydata

VTK学习笔记(十九)vtk polydata1、VtkPolyData的镜像操作2、vtkPolyData数据组成及属性修改3、VTK图像处理(二)--vtkPolyData数据处理前言vtkPolyData数据生成与显示VTK常见的vtkPolyData数据源类vtkPolyData数据的创建vtkPolyData属性数据基本图形操作法向量计算符号化Glyphing曲率计算网格平滑封闭性检测与填补漏洞连通区域分析 以下内容都来自网络搜集 1、VtkPolyData的镜像操作 以下代码完成了vtkPoly

juluwangriyue的博客 5027

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4371

硬核实战!Python爬虫从0到1完整版:爬取知乎热榜+回答内容(数据去重+Excel一键导出+避坑指南,零基础友好)

✔️ 适用人群:Python爬虫零基础、想练手实战爬虫、需要爬取知乎内容做数据分析、办公/学习素材整理的同学爬取知乎热榜全量数据(排名+标题+热榜链接+热度值) →自动跟进爬取每个热榜问题的回答内容(回答者昵称+赞同数+评论数+回答正文+发布时间) →数据清洗+智能去重→一键导出格式化Excel文件,所有功能一站式完成入门级难度,无复杂反爬破解、无分布式/代理池,纯requests请求+静态解析,新手能看懂、能运行、能修改;爬取速度快,热榜+回答全程仅需几十秒。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1461
上一篇: 最简单的 UDP-RTP 协议解析程序
下一篇: 设计模式:代理模式(Proxy)
UestcXiye
博客等级 码龄8年 9029粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值