我很难使用vtk,尤其是vtkPolyDataConnectivityFilter。我输入了Marching Cubes算法的输出,该算法从3d点云创建了一个表面。 但是,当我尝试设置
时filt = vtk.vtkConnectivityFilter()
filt.SetInputData(surface_data) # get the data from the MC alg.
filt.SetExtractionModeToLargestRegion()
filt.ColorRegionsOn()
filt.Update()
filt.GetNumberOfExtractedRegions() # will 53 instead of 1
它给了我奇怪的结果。我不能使用特定区域的提取模式或种子单点,因为我事先不知道它们。
我需要将最大网格点与较小网格点分开,并仅保留大网格。
当我渲染整个输出时,它会向我显示正确的提取区域。但是,不同的区域仍然包含在数据集中,并且无法将其分开。
我做错了什么?
Best J
答案 0 :(得分:0)
我有同样的问题,我必须将转换为vtkpolydata的STL文件分段。
如果查看示例https://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/PolyDataConnectivityFilter_SpecifiedRegion,您会发现它们使用成员函数SetExtractionModeToSpecifiedRegions()。
使用以下代码替换您的代码:
filt.SetInputData(surface_data)
filt.SetExtractionModeToSpecifiedRegions()
filt.AddSpecifiedRegion(0)#Manually从0增加到filt.GetNumberOfExtractedRegions()
filt.Update()
您需要渲染并查看指定的区域,以找出您真正感兴趣的分段区域的索引。