vtkImageActor

vtkImageActor被用于在3D渲染窗口中展示图片。
By changing the interactor to a vtkInteractorStyleImage you can limit rotations so that the 3D render window operates as a 2D image viewer.



python code:

import vtk

fileName = "/Users/weiyang/Desktop/Untitled.png"
reader = vtk.vtkPNGReader()
reader.SetFileName( fileName )
reader.Update()

actor = vtk.vtkImageActor()
actor.SetInputData( reader.GetOutput() )

ren = vtk.vtkRenderer()
ren.AddActor( actor )

renWin = vtk.vtkRenderWindow()
renWin.AddRenderer( ren )

iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow( renWin )
iren.Initialize()

iStyle = vtk.vtkInteractorStyleImage()
iren.SetInteractorStyle( iStyle )

ren.AddActor( actor )
renWin.SetSize( 400, 400 )
renWin.Render()
ren.ResetCameraClippingRange()
renWin.Render()

iren.Start()

vtkImagePlaneWidget

vtkImagePlaneWidget可以被人为地修改位置、朝向。
使用vtkImagePlaneWidget切割数据可以用VTK_NEAREST_RESLICE、VTK_LINEAR_RESLICE、VTK_CUBIC_RESLICE不同的选项控制。
在上面部分的样例代码AddActor之前加上这样的代码:

planeWidgetX = vtk.vtkImagePlaneWidget()
planeWidgetX.SetInteractor( iren )
planeWidgetX.RestrictPlaneToVolumeOn()
planeWidgetX.SetResliceInterpolateToNearestNeighbour()
planeWidgetX.SetInputData( reader.GetOutput() )
planeWidgetX.SetPlaneOrientationToZAxes()
planeWidgetX.SetSliceIndex( 0 )
planeWidgetX.DisplayTextOn()
planeWidgetX.SetResliceInterpolateToNearestNeighbour()
planeWidgetX.On()

注意:planeWidgetX不是vtkActor,不用加入到render中。



左下角坐标显示的函数链:

void vtkImagePlaneWidget::ProcessEvents(vtkObject* vtkNotUsed(object),
                                        unsigned long event,
                                        void* clientdata,
                                        void* vtkNotUsed(calldata))

void vtkImagePlaneWidget::OnLeftButtonDown()

void vtkImagePlaneWidget::StartCursor()

void vtkImagePlaneWidget::ManageTextDisplay()

动态图中的第四个数值是CurrentImageValue。
int vtkImagePlaneWidget::UpdateContinuousCursor(double *q) 中有这样的语句:this->CurrentImageValue = outPD->GetScalars()->GetTuple1(0);
这表明,第四个数值和Scalar数值相关。

分类: python

发表评论

电子邮件地址不会被公开。 必填项已用*标注