是否可以使用py2exe为vtk创建二进制可执行文件?
有人可以提供最低限度的工作示例或至少一些提示吗?Py2exe不是必需的.如果有其他类似程序(bbfreeze等)的工作解决方案,我也很感兴趣.
我想在Windows系统上将VTK与Python一起使用.
似乎我不能使用Windows安装程序,但"必须使用CMake和本机构建系统从源代码编译VTK".到目前为止,我已经安装了CMake.
但现在我想知道如何继续?看来我需要MS Visual Studio来创建项目文件?!
但我没有Visual Studio.那我该怎么办?
我最近开始使用vtk包,我看到这个奇怪的符号,它们包括;在关闭花括号后}.这是一个例子vtkUnstructuredGrid.h
// Description:
// Standard vtkDataSet API methods. See vtkDataSet for more information.
int GetDataObjectType() {return VTK_UNSTRUCTURED_GRID;};
Run Code Online (Sandbox Code Playgroud)
它不是必需的,QtCreator也可以extra ;在解析代码时正确地检测到这一点.我很好奇这可能是什么原因?也许可读性?
我试图将统一网格中的数据写入vtk XML文件,以便我可以使用Paraview渲染它.我希望我的输出文件包含两个变量:一个3分量向量和每个点的一个标量值.我设法写了一个.vti文件,只包含向量,如下所示:
#include <vtkVersion.h>
#include <vtkSmartPointer.h>
#include <vtkXMLImageDataWriter.h>
#include <vtkImageData.h>
int main()
{
int nx = 10, ny = 10, nz = 10;
vtkSmartPointer<vtkImageData> imageData =
vtkSmartPointer<vtkImageData>::New();
imageData->SetDimensions(nx, ny, nz);
#if VTK_MAJOR_VERSION <= 5
imageData->SetNumberOfScalarComponents(3);
imageData->SetScalarTypeToDouble();
#else
imageData->AllocateScalars(VTK_DOUBLE, 3);
#endif
for (int k = 0; k < nz; ++k) {
for (int j = 0; j < ny; ++j) {
for (int i = 0; i < nx; ++i) {
double * voxel = static_cast<double*>(imageData->GetScalarPointer(i,j,k));
int coord = i + …Run Code Online (Sandbox Code Playgroud) 对于那些想要将简单的3D numpy数组(以及轴)导出到.vtk(或.vtr)文件以进行后期处理并在Paraview或Mayavi中显示的人,有一个名为PyEVTK的小模块就是这样做的.该模块支持结构化和非结构化数据等.不幸的是,即使代码在基于unix的系统中工作正常,我也无法在任何简单地使事情变得复杂的Windows安装上工作(不断崩溃).我联系了开发人员,但他的建议没有用
因此我的问题是:如何使用该from vtk.util import numpy_support函数将3D数组(函数本身不支持3D数组)导出到.vtk文件?有没有一种简单的方法可以在不创建vtkDatasets等的情况下完成它?
非常感谢!
我知道您可以将不同数据文件类型的读取器添加到paraview中,但是,所有人都在谈论在c ++中做很多VTK东西,以及(可能更糟)重新编译paraview以使其了解您的数据文件格式。另一方面,paraview还支持python中的脚本编写。也许是因为我对VTK不熟悉,但是对我来说,我只能从pvpython 操作 VTK对象。有什么方法可以使用pvpython动态地将阅读器添加到paraview中?
对于盖驱动腔(CFD)的Lattice Boltzmann模拟,我将立方域分解为(也是立方)8个子域,这些子域由8个等级独立计算。每个MPI等级都会为每个时间步生成一个VTK文件,并且由于我使用的是ParaView,因此我希望将整个内容可视化为一个多维数据集。更具体地说明我要实现的目标:
lbm_out_<rank>.<timestep>.vtsVTK StructuredGrid格式的文件中。.pvts文件,该*.vts文件收集文件并将包含子域的文件合并为一个文件,ParaView可以将其视为整个域。不幸的是,我遇到了许多问题,因为我觉得ParaView和VTK的文档记录非常差,并且来自ParaView的错误消息完全没有用。
我有以下*.pvts文件,其中包括一个幽灵层和:
<?xml version="1.0"?>
<VTKFile type="PStructuredGrid" version="0.1" byte_order="LittleEndian">
<PStructuredGrid WholeExtent="0 7 0 7 0 7 " GhostLevel="1">
<PPoints>
<PDataArray NumberOfComponents="3" type="Float32" />
</PPoints>
<Piece Extent="0 4 0 4 0 4" Source="lbm_out_0.0.vts"/>
<Piece Extent="3 7 0 4 0 4" Source="lbm_out_1.0.vts"/>
<Piece Extent="0 4 3 7 0 4" Source="lbm_out_2.0.vts"/>
<Piece Extent="3 7 3 7 0 4" Source="lbm_out_3.0.vts"/>
<Piece Extent="0 4 0 …Run Code Online (Sandbox Code Playgroud) 以下是我所做的粗略解释vtk:
vtkClipClosedSurface切断迷宫之一,使我得到了没有打开的表面的对象.一个规则的表面看起来是这样的,有一个封闭的表面看起来是这样.这是我的问题:对于我的结构的更复杂的版本,我得到这个:
你能看到它在左上角是如何正常工作的,靠近右下方它会停止创建曲面吗?有时我在最后一部分也会得到非常奇怪的三角形.
根据我的理解,vtkClipClosedSurface从表面法线知道在哪里关闭表面和不在哪里.问题是:我的结构的法线很好,它们都指向正确的方向.如果仔细观察结构,你会注意到下部基本上是顶部的反转,它逐渐变化,都在一个表面上.
我尝试修改我的结构,然后切割许多东西vtkSmoothPolyDataFilter,vtkCleanPolyData或者vtkPolyDataNormals.我甚至试图用边界表面提取vtkFeatureEdges,这导致了更糟糕的结果.甚至vtkFillHolesFilter没有产生任何可接受的结果.我的表面看起来完美无瑕,足以创造一个边界.
我不知道还有什么可以尝试的.其他结构也会发生这种情况.使用CAD工具修复它是不可能的,因为它应该是开箱即用的.请帮我!
这是几何不能正确关闭曲面的几何示例.这次我使用的vtkFillHolesFilter结果是结构内部的表面,而它们只应占据te对象的边界.

如果你需要更详细的我的管道纲要,这里有:
mayavi.mlab.contour3dPolyData通过提取actor.mapper.inputtvtk为常规格式vtkvtkClipClosedSurface 使用平面集合切除部分结构(当平面集合与结构边界相同时会发生错误)编辑:好的,这没有得到足够的重视,所以我构建了一个最小的,完整的,可验证的工作示例来重现行为:
import numpy as np
import vtk # VTK version 7.0
from mayavi import mlab # mayavi version 4.4.4
from mayavi.api import Engine, OffScreenEngine
from tvtk.api import tvtk
def schwarz_D(x, y, z, linear_term=0): …Run Code Online (Sandbox Code Playgroud) 我按如下方式读取多帧dicom并获取字节数组中图像的总像素数据.
gdcm.ImageReader _reader = new gdcm.ImageReader();
_reader.SetFileName("FileName");
_reader.Read();
byte[] byteArray= new byte[_reader.GetImage().GetBufferLength()];
_reader.GetImage().GetBuffer(byteArray);
Run Code Online (Sandbox Code Playgroud)
但是对于具有超过300帧的多帧,它会给出内存不足的异常.所以我想一次提取一个字节数组中的单帧像素数据.任何的想法??
我在 VTK 中有一个图像,正在使用 vtkImageViewer2 查看,并且我想放大用户单击的点。我在 Java 工作。有谁知道如何做到这一点?
谢谢