2011-09-28 32 views
1

我想在Python中创建一个Mesh对象。我正在使用从以下web page安装的python绑定。至于C++代码,我们可以这样做,如下所示:如何使用Python绑定在ITK中创建网格对象?

 MeshType::Pointer mesh = MeshType::New(); 

即使使用ITK,我也很新。不知道如何创建它。在C++文档的Mesh构造函数中,它说明了一个必要的参数,即TPixelType。无法找到。

有人可以帮我请这个。

感谢

回答

2

如果我是你,我会看看附带ITK 4.0 Python绑定。您可以通过在cmake中打开选项WRAP_ITK_PYTHON来访问它们。

一次,你编译ITK与开启你的python绑定可以创建2种目类型开箱:

import itk 
meshType2D = itk.Mesh.D2Q.New() 
meshType3D = itk.Mesh.D3Q.New() 

或者你可以明确地实例化类,如下所示:

import itk 
meshType2D = itk.Mesh[itk.D, 2, itk.QuadEdgeMeshTraits.D2BBFF] 
meshType3D = itk.Mesh[itk.D, 3, itk.QuadEdgeMeshTraits.D3BBFF] 

这将为您提供具有默认网格特征的双像素值的2维和3维网格。就ITK中的像素类型而言,它们相当于基本的C++变量类型:double,float,unsigned int等。这些基本类型包装在Python中,可以在ITK名称空间中找到:itk.D,itk.F ,itk.UI等

+0

非常感谢您的回答。我有3,14英镑。它适用于'itk.Mesh.D2D.New()',但不适用于'itk.Mesh.D2D.New()'。至于明确的网格创建,如果我给例如'itk.Mesh [itk.F,3]'它会给出以下错误。 'itkTemplate:对于itk :: Mesh类'没有模板(,3)。你能否告诉我最简单的方法来探索ITk的Python绑定。非常感谢。 – Shan

+0

另外在网站上最新的正式版本是3.2。我找不到ITK 4.0。谢谢 – Shan

+1

Hey Shan, 对于所有不同的ITK模板类型(如Mesh和Image),Python中只包含所有可能的维和像素类型的有限子集。对于网格的情况,我认为它可能只是双重包装。这就是为什么你对itk.Mesh [itk.F,3]的调用失败。 要获得超过3.x的ITK v 4.x,您需要转到git存储库。您可以通过在github上搜索ITK或通过ITK网站上的链接找到它。 – ncRubert