vtkMarchingCubes(0000026EDEC65CD0) is of type vtkPolyData, but a vtkImageData is required.
时间: 2024-05-05 12:15:34 浏览: 150
This error occurs when you try to apply the Marching Cubes algorithm to a vtkPolyData object instead of a vtkImageData object. The Marching Cubes algorithm is used to extract iso-surfaces from volumetric data (such as CT or MRI scans) represented as a vtkImageData object.
To fix this error, you need to make sure that you are passing a vtkImageData object to the vtkMarchingCubes filter. You can either read in volumetric data from a file using one of the vtkImageReader classes, or create a vtkImageData object from scratch using the vtkImageData class.
Here's an example of how to use vtkMarchingCubes with a vtkImageData object:
```python
import vtk
# read in a CT scan as a vtkImageData object
reader = vtk.vtkDICOMImageReader()
reader.SetDirectoryName("path/to/ct/scan")
reader.Update()
# apply the marching cubes algorithm
mcubes = vtk.vtkMarchingCubes()
mcubes.SetInputData(reader.GetOutput())
mcubes.SetValue(0, 100) # set iso-value
mcubes.Update()
# get the output as a vtkPolyData object
polydata = mcubes.GetOutput()
```
In this example, we first read in a CT scan as a vtkImageData object using the vtkDICOMImageReader class. We then set the input of the vtkMarchingCubes filter to the output of the reader and set an iso-value of 100. Finally, we get the output of the filter as a vtkPolyData object.
阅读全文