简体   繁体   English

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

[英]Read file BMP chain into VTK and render volume 3d by Python+QT

I would like to delete the black part of the cube leaving only orange. 我想删除立方体的黑色部分,只留下橙色。 But I do not know how. 但是我不知道怎么做。 My code is below. 我的代码如下。

在此处输入图片说明 在此处输入图片说明

         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)

Solved. 解决了。 I added "reader.Allow8BitBMPOn()" when reading bmp file. 在读取bmp文件时,我添加了“ reader.Allow8BitBMPOn()”。 This is the result: enter image description here 结果就是: 在此处输入图片描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM