标签: vtk

什么软件可以直观显示VTK文件格式?

我运行一个输出许多.vtk文件的代码.我可以使用哪些软件包来可视化这些VTK文件?

c++ vtk

7
推荐指数
1
解决办法
8737
查看次数

如何将VTK文件读入Python数据结构?

我有一些VTK文件,看起来像这样:

# vtk DataFile Version 1.0
Line representation of vtk
ASCII
DATASET POLYDATA
POINTS 30 FLOAT
234 462 35
233 463 35
231 464 35
232 464 35
229 465 35
[...]
LINES 120 360
2 0 1
2 0 1
2 1 0
2 1 3
2 1 0
2 1 3
2 2 5
2 2 3
[...]
Run Code Online (Sandbox Code Playgroud)

我想从这些VTK文件中获取两个列表:edgesList和verticesList:

  • edgesList应包含边((FromVerticeIndex,ToVerticeIndex,Weight)-tuples
  • verticesList应包含顶点为(x,y,z)-tuples.索引是edgesList中提到的索引

我不知道如何使用standard-vtk-python库提取它.我到目前为止:

import sys, vtk

filename = "/home/graphs/g000231.vtk"

reader = vtk.vtkSTLReader()
reader.SetFileName(filename)
reader.Update()

idList = vtk.vtkIdList() 

polyDataOutput = …
Run Code Online (Sandbox Code Playgroud)

python vtk

7
推荐指数
2
解决办法
7124
查看次数

VTK窗口没有填充wx.Panel

我正在用wxPython和VTK创建一个应用程序.屏幕左侧有一个配置面板(wx.Panel),右侧有一个VTK窗口,也基于wx.Panel.将面板放置在wxFrame的boxsizer中,并使用wxFormBuilder应用程序中定义的比例大小调整大小,然后使用该大小来生成XRC文件.

在此输入图像描述

我有一个非常具体的问题,一些Windows 7机器一直没有正确调整窗口的VTK部分 - 请参阅上面屏幕截图中VTK窗口周围的白色边框.我试图让这个VTK窗口固定为1280x720 - 它是 - 但是有一个尺寸问题,一些元素正在切断窗口的底部和右边.在Ubuntu 10.04,XP或Windows 7的某些版本上运行时,此错误不存在(我不确定那些有效的和那些尚未有效的内容是什么).

当遇到这个错误时,我可以与屏幕的白色部分进行交互 - 通过VTK交互器正确处理点击,因此它仍然是我的VTK场景的一部分.

应用程序设置如下,右侧VTK窗格是graphics_panel.面板设置为wxEXPAND没有其他标志,我的应用程序中的所有元素都自动设置为大小(没有设置最小,最大或默认大小).唯一的例外是bSizer1(主要的wxFrame sizer),它具有最小宽度和高度设置(我不确定这是否是正确的方法,但它似乎工作正常).

面板设置

我从wxFormBuilder生成XRC,然后在我的应用程序中使用它,我的VTK场景设置如下:

class MyScene(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, style=wx.NO_BORDER) 
        #'parent' is main_frame (wx.Frame instance)
        self._parent = parent
        self.renderer = vtk.vtkRenderer()

        # I create and add my VTK actors here (SNIPPED)

        self._set_lighting()

        self.widget = VTKWidget(self,-1) #VTKWidget is a wxVTKRenderWindowInteractor
        self.widget.GetRenderWindow().AddRenderer(self.renderer)
        self.widget.Enable(1)
        self.widget.SetDoubleBuffered(True)

        self.Bind(wx.EVT_SIZE, self.on_size)
Run Code Online (Sandbox Code Playgroud)

我一直在尝试解决使用该on_size函数的元素大小的MyScene问题,但下面没有任何内容可以解决我的问题.报告的数值正常的和错误的系统是符合市场预期.

def on_size(self, evt):
    print "---- MyScene on_size ----"
    print "Widget …
Run Code Online (Sandbox Code Playgroud)

python wxwidgets wxpython vtk

7
推荐指数
1
解决办法
847
查看次数

CMake错误 - cmTryCompileExec已停止工作(VTK)

您好我试图在Windows 8下使用CMake编译VTK和ITK.ITK编译完美,但当我尝试通过CMake处理VTK时,我得到错误cmTryCompileExec has stopped working.我怎么解决这个问题?我的CMake版本是2.8.12.1

c++ cmake vtk itk

7
推荐指数
1
解决办法
343
查看次数

使用Python从vtk文件中的数据绘制轮廓图

我有一组存储在VTK文件中的数据,它代表一个带有数组中标量点数据的域的切割.我正在尝试生成所述标量的等高线图,使其看起来有点像使用ParaView制作的附图.我宁愿坚持使用vtk库而不是使用其他东西,比如Matplotlib,因为我认为它们会产生更好的可视化效果.预览我想要实现的目标.

我在网上看过几个例子,但没有一个对我有效(没有错误被抛出,我最终得到的只是背景的空渲染),所有我能做的就是表面图数据(例如:这里).

这是我所拥有的代码的当前版本(非常类似于成功生成曲面图的代码):

# import data
reader = vtk.vtkDataSetReader()
reader.SetFileName('inputDataFiles/k_zCut.vtk')
reader.ReadAllVectorsOn()
reader.ReadAllScalarsOn()
reader.Update()

# access data
data = reader.GetOutput()
d = data.GetPointData()
array=d.GetArray('k')

# create the filter
contours = vtk.vtkContourFilter()
contours.SetInput(reader.GetOutput())
contours.GenerateValues(5,1.,5.)

# create the mapper
mapper = vtk.vtkPolyDataMapper()
mapper.SetInput(contours.GetOutput())
mapper.ScalarVisibilityOff()
mapper.SetScalarRange(1., 5.)

# create the actor
actor = vtk.vtkActor()
actor.SetMapper(mapper)

# create a rendering window and renderer
ren = vtk.vtkRenderer()
ren.SetBackground( 0.329412, 0.34902, 0.427451 ) #Paraview blue

# Assign actor to the renderer
ren.AddActor(actor)

renWin = …
Run Code Online (Sandbox Code Playgroud)

python vtk python-2.7

7
推荐指数
1
解决办法
4159
查看次数

VTK文件的文件格式,用作XTK的输入

我在远程服务器上有一个.vtk文件.我通过http访问它(我验证了文件的URL是正确的,实际上我可以从浏览器下载它).我也尝试使用matlab创建的.vtk文件中的xtk体积渲染中的建议删除文件中的空格.

但我得到一个例外

Unable to get property 'length' of undefined or null reference.
Run Code Online (Sandbox Code Playgroud)

你能否指导一下应该使用的.vtk文件格式,以使其顺利运行?我正在关注xtk教程http://jsfiddle.net/gh/get/toolkit/edge/xtk/lessons/tree/master/05/#run,下面是我的代码

window.onload = function () {

    // create and initialize a 3D renderer
    var r = new X.renderer3D();
    r.init();

    // create a new X.mesh
    var skull = new X.mesh();
    // .. and associate the .vtk file to it
     skull.file = 'http://localhost/startup/bunnycheck.vtk';  //using other .vtk file
    //skull.file = 'http://x.babymri.org/?skull.vtk';     

    // .. make it transparent
    skull.opacity = 0.5;

    // .. add the mesh
    r.add(skull); …
Run Code Online (Sandbox Code Playgroud)

javascript vtk xtk

7
推荐指数
1
解决办法
434
查看次数

如何将vtkimage转换为numpy数组

我试图用python和python-vtk处理MHD图像文件.该文件放在谷歌驱动器:mhd.

我想将它转换为numpy数组,然后根据给定的值"500例如"分割它们.然后计算摘要信息.我按照这个
[post]的说明如何将3D vtkDataSet转换为numpy数组?
但它对我的情况不起作用.

import vtk
imageReader = vtk.vtkMetaImageReader()
imageReader.SetFileName(testfile1)
imageReader.Update() 
# from vtk.util.numpy_support import numpy_to_vtk, vtk_to_numpy does not work for the data type issue

image = imageReader.GetOutput()
# List the dimensions of the image, for example
print image.GetDimensions()
pixelspace = imageReader.GetPixelSpacing()
Run Code Online (Sandbox Code Playgroud)

这里出现错误:

AttributeError: GetPixelSpacing
Run Code Online (Sandbox Code Playgroud)

我怎么能实现转换?
当我完成数据拆分时,我怎么能将它们保存回mhd(或原始数据会更好?)

python arrays numpy image vtk

6
推荐指数
1
解决办法
2245
查看次数

替代Mayavi进行科学3D绘图

在没有令人满意的第一个答案和无法解释的降票后进行编辑

我需要绘制一个在3D网格中构造的标量字段,如下所示:

import numpy as np
from mayavi import mlab

dt = 10
X,Y,Z = np.mgrid[0:dt,0:dt,0:dt]

F = X**2+Y**2+Z**2

test = mlab.figure(size = (1024,768), bgcolor = (1,1,1), fgcolor = (0, 0, 0))
sf = mlab.pipeline.scalar_field(X,Y,Z,F)
vl = mlab.pipeline.volume(sf)
mlab.outline()
mlab.axes()
mlab.title('Can not change font size for this title')
mlab.xlabel('Only end ticks')
mlab.ylabel('No major ticks')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想在Python中这样做,因为我用这种语言模拟了许多数据集,并且我希望能够在对模拟参数执行敏感度时快速将其可视化。

Mayavi似乎为科学3d绘图提供了非常标准的例程。但是,在出版物中交流这些图时,没有非常基本的图自定义设置,例如轴上的主要和次要刻度线。此外,迄今为止,所支持的那些非常基本的功能甚至无法正常工作(例如,参见字体大小错误示例和此处)。

Python中是否有任何体面且易于使用的科学3D绘图库?我曾尝试学习vtk,但网站示例似乎已经过时了(例如,无法运行的体积渲染示例,我尝试编辑许多行代码以使其正常运行),而其他人似乎都同意缺少该文档。

体面的科学绘图库的意思是:

  • 允许自定义轴,标签,标题等中的字体。
  • 可以编辑轴刻度间距(至少具有主要刻度)。
  • 可以添加颜色条
  • 有文档。

提前致谢!

python numpy vtk mayavi

6
推荐指数
1
解决办法
1973
查看次数

自 Mac OS 10.11 El Capitan 起具有系统完整性保护的 DYLD_LIBRARY_PATH 技巧的替代方案

这是我所拥有的:

  • Mac OS 10.11 El Capitan
  • python 2.7.12,从python.org下安装 /Library/Frameworks/Python.framework/
  • PyCharm 2016.2.3
  • vtk 7.1.0

这是我所做的:

  • 在本地构建一个 python 模块。就我而言,这是vtk。有关摘要,请参阅我配置 vtk 的 CMake 调用。

    cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release -DVTK_WRAP_PYTHON=ON -DBUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX="/opt/dev/versions/vtk/vtk-7.1.0-shared" -DPYTHON_INCLUDE_DIR="/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/" -DPYTHON_LIBRARY="/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib"
    
    Run Code Online (Sandbox Code Playgroud)
  • 将 python 包安装在 python 可以找到的位置。就我而言,这是/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 请注意,我需要DYLD_LIBRARY_PATH通过库所在的位置扩展/opt/dev/versions/vtk/vtk-7.1.0-shared/lib/.

  • 如果我从终端启动python,我可以成功导入vtk。

    import vtk
    v = vtk.vtkVersion()
    print v.GetVTKVersion()
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果我尝试在 PyCharm 的 python 控制台中导入 vtk,我会收到以下错误:

    Traceback (most recent call last):
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code
        exec(code_obj, self.user_global_ns, self.user_ns)
      File "<ipython-input-2-b7e11aadda62>", line 1, in <module> …
    Run Code Online (Sandbox Code Playgroud)

python macos dyld vtk

6
推荐指数
1
解决办法
3634
查看次数

VTK - 如何使用单个actor渲染多个3d文本对象

我试图使用vtk对象vtkVectorText渲染文本.它适用于单个3d位置.我需要的是在一些3d(vtkPoint)点上方放置一个3d文本.我尝试用vtkTextActor3d做这个,但是每个文本对象都需要一个单独的actor,我最终得到了10k演员,当我试图旋转场景时,这是非常糟糕和滞后的.

我还尝试应用一些appendFilter来创建一个vtkVectorText数组,从appendFilter的对象获取非结构化网格,然后将其转换为polydata,以便使用我想要的点位置渲染非结构化网格.它没有显示任何内容,因为我无法弄清楚执行此操作的最佳方法是什么.

有人可以帮我弄这个吗?

这是我上一部分的代码:

vtkSmartPointer<vtkAppendFilter> appendFilter = vtkSmartPointer<vtkAppendFilter>::New();
//for each point
for (int i = 0; i < N;i++) {
    vtkSmartPointer<vtkVectorText> vecText = vtkSmartPointer<vtkVectorText>::New();
    vecText->SetText("My text, needs to appear multiple times");
    vecText->Update();
    appendFilter->AddInputData(vecText->GetOutput());
    appendFilter->Update();
}
vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid = appendFilter->GetOutput();
unstructuredGrid->Allocate(N);
unstructuredGrid->SetPoints(points);
vtkSmartPointer<vtkGeometryFilter> geometryFilter = vtkSmartPointer<vtkGeometryFilter>::New();
geometryFilter->SetInputData(unstructuredGrid);
geometryFilter->Update();
vtkSmartPointer<vtkPolyDataMapper> textMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
textMapper->SetInputConnection(geometryFilter->GetOutputPort());
vtkSmartPointer<vtkActor> textActor = vtkSmartPointer<vtkActor>::New();
textActor->SetMapper(textMapper);
textActor->GetProperty()->SetColor(0, 1, 0);

renderer->AddActor(textActor);
Run Code Online (Sandbox Code Playgroud)

3d vector-graphics vtk

6
推荐指数
1
解决办法
953
查看次数

标签 统计

vtk ×10

python ×6

c++ ×2

numpy ×2

3d ×1

arrays ×1

cmake ×1

dyld ×1

image ×1

itk ×1

javascript ×1

macos ×1

mayavi ×1

python-2.7 ×1

vector-graphics ×1

wxpython ×1

wxwidgets ×1

xtk ×1