将文件BMP链读入VTK并通过Python+QT渲染体积3d

Posted

技术标签:

【中文标题】将文件BMP链读入VTK并通过Python+QT渲染体积3d【英文标题】:Read file BMP chain into VTK and render volume 3d by Python+QT 【发布时间】:2018-12-09 17:35:54 【问题描述】:

我想删除立方体的黑色部分,只留下橙色。 但是我不知道怎么做。 我的代码如下。

         self.ren = vtk.vtkRenderer()
         self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
         self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
         reader = vtk.vtkBMPReader()
         reader.SetFilePrefix("C:/Users/tia chop/Documents/cttrung/")
         reader.SetFilePattern("%s%d.bmp")
         reader.SetFileNameSliceOffset(0)
         #reader.SetFileNameSliceSpacing(1)
         #reader.GetDataScalarType()
         reader.SetDataSpacing(400,400,400)
         reader.SetDataExtent(0,399,0,399,0,399)
         reader.Update()

        colors = vtk.vtkNamedColors()
        colors.SetColor("BkgColor", [51, 77, 102, 255])
        volumeMapper = vtk.vtkGPUVolumeRayCastMapper()
        volumeMapper.SetInputConnection(reader.GetOutputPort())

        volumeColor = vtk.vtkColorTransferFunction()
        volumeColor.AddRGBPoint(500, 1.0, 0.5, 0.3)
        volumeColor.AddRGBPoint(1000, 1.0, 0.5, 0.3)
        volumeColor.AddRGBPoint(1150, 1.0, 1.0, 0.9)

        volumeScalarOpacity = vtk.vtkPiecewiseFunction()
        volumeScalarOpacity.AddPoint(0, 0.00)
        volumeScalarOpacity.AddPoint(500, 0.1)
        volumeScalarOpacity.AddPoint(1500, 0.15)
        volumeScalarOpacity.AddPoint(2150, .9)

        volumeGradientOpacity = vtk.vtkPiecewiseFunction()
        volumeGradientOpacity.AddPoint(10, 0.0)
        volumeGradientOpacity.AddPoint(100, 0.5)
        volumeGradientOpacity.AddPoint(200, 1.0)



        volumeProperty = vtk.vtkVolumeProperty()
        volumeProperty.SetColor(volumeColor)
        volumeProperty.SetScalarOpacity(volumeScalarOpacity)

        volumeProperty.SetInterpolationTypeToLinear()
        volumeProperty.ShadeOn()
        volumeProperty.SetAmbient(0.4)
        volumeProperty.SetDiffuse(0.6)
        volumeProperty.SetSpecular(0.2)

        volume = vtk.vtkVolume()
        volume.SetMapper(volumeMapper)
        volume.SetProperty(volumeProperty)

       self.ren.AddViewProp(volume)

【问题讨论】:

已解决。我在读取 bmp 文件时添加了“reader.Allow8BitBMPOn()”。 【参考方案1】:

解决了。我在读取 bmp 文件时添加了“reader.Allow8BitBMPOn()”。 这是结果:enter image description here

【讨论】:

以上是关于将文件BMP链读入VTK并通过Python+QT渲染体积3d的主要内容,如果未能解决你的问题,请参考以下文章

003-Qt&Vtk-读取jpgpngdicom等格式图片

win10环境下VTK7.1的编译和Qt调用VTK的详细教程二(VS2013编译支持Qt的VTK库)

VTK读取图片,然后QT显示

python vtk-qt-demo.py

win10环境下VTK7.1的编译和Qt调用VTK的详细教程(本文链接含VTK库和测试代码的分享)

002-Qt&Vtk-第一个VtkQt程序