如何使用Python VTK绘制线条

主要函数介绍:

vtk.vtkPoints() 在VTK中用于定义点的类,使用points.InsertPoint(index, x, y, z) 即可插入点集。函数中,第一个参数是点的序号,后面是三个参数是点的坐标。

vtk.vtkLineSource() 在VTK中定义直线的类,通过SetPoints(points),输入直线经过的点。

vtk.vtkParametricSpline() 在VTK中定义曲线的类,通过SetPoints(points),输入曲线经过的点。

vtk.vtkParametricFunctionSource() 曲线插值拟合函数,可以将输入的点集拟合成一条曲线。有很多生成方法。我们可以简单的看一下VTK官方文档介绍

S\CALAR_NONE - Scalars are not generated (default).
SCALAR_U - The scalar is set to the u-value.
SCALAR_V - The scalar is set to the v-value.
SCALAR_U0 - The scalar is set to 1 if u = (u_max - u_min)/2 = u_avg, 0 otherwise.
SCALAR_V0 - The scalar is set to 1 if v = (v_max - v_min)/2 = v_avg, 0 otherwise.
SCALAR_U0V0 - The scalar is set to 1 if u == u_avg, 2 if v == v_avg, 3 if u = u_avg && v = v_avg, 0 otherwise.
SCALAR_MODULUS - The scalar is set to (sqrt(uu+vv)), this is measured relative to (u_avg,v_avg).
SCALAR_PHASE - The scalar is set to (atan2(v,u)) (in degrees, 0 to 360), this is measured relative to (u_avg,v_avg).
SCALAR_QUADRANT - The scalar is set to 1, 2, 3 or 4. depending upon the quadrant of the point (u,v).
SCALAR_X - The scalar is set to the x-value.
SCALAR_Y - The scalar is set to the y-value.
SCALAR_Z - The scalar is set to the z-value.
SCALAR_DISTANCE - The scalar is set to (sqrt(xx+yy+z*z)). I.e. distance from the origin.
SCALAR_USER_DEFINED - The scalar is set to the value returned from EvaluateScalar().

actor.GetProperty().SetColor() 线条颜色配置

actor.GetProperty().SetLineWidth() 线条宽度配置

拟合曲线代码:

import vtk

points = vtk.vtkPoints()  # 定义一个点工具
points.InsertPoint(0, 329, 338, 45)  # 使用InsertPoint可以插入点
# 注意:points.InsertPoint(a, b, c, d)
# 其中a表示点的序号,(b,c,d)表示点的三维坐标
points.InsertPoint(1, 328, 319, 46)
points.InsertPoint(2, 300, 329, 96)
# 定义曲线工具
# 将前面的几个点插值拟合成一条曲线
spline = vtk.vtkParametricSpline()
spline.SetPoints(points)

splineSource = vtk.vtkParametricFunctionSource()
splineSource.SetParametricFunction(spline)
splineSource.Update()

splineMapper = vtk.vtkPolyDataMapper()
splineMapper.SetInputConnection(splineSource.GetOutputPort())

splineActor = vtk.vtkActor()
splineActor.SetMapper(splineMapper)
# 设置线条颜色
splineActor.GetProperty().SetColor(0.3800, 0.7000, 0.1600)
# 设置线条宽度
splineActor.GetProperty().SetLineWidth(5)

ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren1.AddActor(splineActor)

ren1.SetBackground(1, 1, 1)
renWin.SetSize(250, 250)
renWin.Render()
iren.Start()

绘制直线代码

import vtk

points = vtk.vtkPoints()  # 定义一个点工具
points.InsertPoint(0, 329, 338, 45)  # 使用InsertPoint可以插入点
# 注意:points.InsertPoint(a, b, c, d)
# 其中a表示点的序号,(b,c,d)表示点的三维坐标
points.InsertPoint(1, 328, 319, 46)
points.InsertPoint(2, 300, 329, 96)
# 定义直线工具

lineSource = vtk.vtkLineSource()
lineSource.SetPoints(points)

lineSource.Update()

lineMapper = vtk.vtkPolyDataMapper()
lineMapper.SetInputConnection(lineSource.GetOutputPort())

splineActor = vtk.vtkActor()
splineActor.SetMapper(lineMapper)
# 设置线条颜色
splineActor.GetProperty().SetColor(0.3800, 0.7000, 0.1600)
# 设置线条宽度
splineActor.GetProperty().SetLineWidth(5)

ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren1.AddActor(splineActor)

ren1.SetBackground(1, 1, 1)
renWin.SetSize(250, 250)
renWin.Render()
iren.Start()

到此这篇关于如何使用Python-VTK绘制线条的文章就介绍到这了,更多相关Python-VTK绘制线条内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python VTK计算曲面的高斯曲率和平均曲率

    前言: VTK,(visualizationtoolkit)是一个开放资源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk. 本文介绍了 如何使用户Python版本的VTK计算曲面的高斯曲率并映射在曲面上.本例中使用了两个不同的表面,每个表面根据其高斯曲率和平均曲率着色.

  • Python vtk读取并显示dicom文件示例

    因为做项目的原因,所以接触到了医学图像dicom文件.vtk刚开始看,这里仅仅只是其最简单的读取显示功能.此处用到了vtk库,可自行百度安装方法. 下面附上代码: from vtk import * # reader the dicom file reader = vtkDICOMImageReader() reader.SetDataByteOrderToLittleEndian() reader.SetFileName("00efb2fedf64b867a36031a394e5855a.dc

  • 如何使用Python VTK高亮显示actor

    前言: VTK,(visualizationtoolkit)是一个开放资源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk. 主要函数介绍: NewPickedActor.GetProperty(): 通过该函数,可以设置actor的性质,如颜色.表面样式等. vtk.vt

  • VTK与Python实现机械臂三维模型可视化详解

    三维可视化系统的建立依赖于三维图形平台, 如 OpenGL.VTK.OGRE.OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特有的函数进行定量操作, 需要开发人员熟悉相关函数, 从而造成了开发难度大. 周期长等问题.VTK. ORGE.OSG等平台使用封装更好的函数简化了开发过程.下面将使用Python与VTK进行机器人上位机监控界面的快速原型开发. 完整的上位机程序需要有三维显示模块.机器人信息监测模块(位置/角度/速度/电量/温度/错误信息...).通信模块(串口/USB/WI

  • python+VTK环境搭建及第一个简单程序代码

    简介: Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk. 在Windows环境下用Python语言开发VTK程序 1.安装Python集成开发环境IDLE,相信大家已经轻车熟路,如果不了解,大家可以参考:运行

  • Python-VTK批量读取二维切片并显示三维模型

    目录 主要函数介绍 效果展示 前言: VTK,(visualizationtoolkit)是一个开放资源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk. 主要函数介绍 vtk.vtkJPEGReader(): 读取图片的接口,可以通过该接口设置读取的图片位置.大小.维度.

  • Python VTK映射三维模型表面距离

    数据准备: 需要准备两个stl文件.Python需要安装vtk库 步骤一:数据读取 首先通过vtk.vtkSTLReader() 定义stl文件读取接口,再通过reader1.GetOutput() 就可以获得stl在vtk工作流的数据. 步骤二:去除重复点 通过vtk.vtkCleanPolyData() 可以去除模型中的重复点 步骤三:计算距离 使用 vtk.vtkDistancePolyDataFilter() ,使用上一步中过滤掉重复点后的数据作为输入.如distanceFilter.S

  • 使用Python VTK 完成图像切割

    目录 1.读取二维图片序列完成面绘制 2.vtk.vtkOutlineFilter()介绍 3.隐函数平面模块vtk.vtkImplicitPlaneWidget() 4.vtk.vtkClipPolyData() 切割效果展示 1.读取二维图片序列完成面绘制 详情见Python-VTK批量读取二维切片并显示三维模型 2.vtk.vtkOutlineFilter()介绍 这个空间就相当于生成渲染模型的轮廓线,比如三维图像大小为(256x256x200),那么这个控件就会生成一个长宽高分别为256

  • Python-VTK隐式函数属性选择和剪切数据

    前言: VTK,(visualizationtoolkit)是一个开放资源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk. 本文主要介绍了如何利用隐式函数的属性来选择和剪切数据,尤其是如何使用区域分隔属性来选择数据. 使用隐式函数选择或提取数据意味着选择位于函数特定区域内

  • 如何使用Python VTK绘制线条

    主要函数介绍: vtk.vtkPoints() 在VTK中用于定义点的类,使用points.InsertPoint(index, x, y, z) 即可插入点集.函数中,第一个参数是点的序号,后面是三个参数是点的坐标. vtk.vtkLineSource() 在VTK中定义直线的类,通过SetPoints(points),输入直线经过的点. vtk.vtkParametricSpline() 在VTK中定义曲线的类,通过SetPoints(points),输入曲线经过的点. vtk.vtkPar

  • Python 图形绘制详细代码

    目录 1.画第一个图形 1.1 代码 1.2 输出 1.3 代码的部分解释 2.在同一图上绘制两条或多条线 2.1 代码 2.2 输出 2.3 代码的部分解释 3.自定义绘图 3.1 代码 3.2 输出 3.3 代码的部分解释 1.画第一个图形 第一个图形从简单的开始. 1.1 代码 # importing the required module import matplotlib.pyplot as plt # x axis values x = [1,2,3] # corresponding

  • Python OpenCV绘制各类几何图形详解

    目录 一.绘制直线 二.绘制矩形 三.绘制圆形 四.绘制椭圆 五.绘制多边形 六.绘制文字 七.总结 一.绘制直线 在OpenCV中,绘制直线需要获取直线的起点和终点坐标,调用cv2.line()函数实现该功能.该函数原型如下所示: img = line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) – img表示需要绘制的那幅图像 – pt1表示线段第一个点的坐标 – pt2表示线段第二个点的坐标 – color表示线条颜色,需

  • Python+Matplotlib绘制3D图像的示例详解

    目录 1. 绘制3D柱状图 2. 绘制3D曲面图 示例1 示例2 3.绘制3D散点图 4. 绘制3D曲线图 1. 绘制3D柱状图 绘制3D柱状图使用的是axes3d.bar()方法. 可能跟我们中学学的有一点不同的是,其语法如下: bar(left, height, zs=0, zdir=‘z’, *args, **kwargs) 其中left表示指向侧边的轴,zs表示指向我们的方向的轴,height即表示高度的轴.这三者都需要是一维的序列对象.在调用相关方法的时候,比如设置轴标签,还有一点需要

  • Python 图形绘制详细代码(一)

    目录 1.画第一个图形 1.1 代码 1.2 输出 1.3 代码的部分解释 2.在同一图上绘制两条或多条线 2.1 代码 2.2 输出 2.3 代码的部分解释 3.自定义绘图 3.1 代码 3.2 输出 3.3 代码的部分解释 1.画第一个图形 第一个图形从简单的开始. 1.1 代码 # importing the required module import matplotlib.pyplot as plt # x axis values x = [1,2,3] # corresponding

  • 基于Python实现绘制属于你的世界地图

    目录 1.准备 2.简单地图 3.世界地图 Python之所以这么流行,是因为它不仅能够应用于科技领域,还能用来做许多其他学科的研究工具,绘制地图便是其功能之一. 今天我们用matplot工具包之一的 mpl_toolkits 来绘制世界地图,这是一个简单的可视化工具,如果希望绘制更加复杂的地图,可以考虑使用Google Maps API,不过这不在我们今天的讨论范围之内. 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指

  • js+html5通过canvas指定开始和结束点绘制线条的方法

    本文实例讲述了js+html5通过canvas指定开始和结束点绘制线条的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> Your browser does n

  • matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatterplot in 3D. ''' from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def randrange(n, vmin, vmax): ''' Helper f

随机推荐