我想问一个关于VTK操作的问题。我有一个VTK文件,我想获得许多图像,每个图像从不同的角度拍摄,以创建该图像的电影。
我创建了以下代码(见下文)。问题是虽然不同的坐标会将图像旋转到我想要的角度,但缩放有点偏。因此,某些角度的图像似乎被放大了#34;但是具有不同角度的其他图像似乎被缩小了"。
我不确定如何将所有图像设置为相同"缩放"规模。将非常感谢帮助。谢谢。
def rotateSave(data, coordinates, filename):
### Set up things
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputData(data)
actor = vtk.vtkActor()
actor.SetMapper(mapper)
### Translate and Rotate
center_x, center_y, center_z = actor.GetCenter()
ren.AddActor(actor)
w = vtk.vtkTransform()
w.Translate(-center_x, -center_y, -center_z)
w.RotateX(coordinates[0])
w.RotateZ(coordinates[2])
actor.SetUserTransform(w)
### Save
renWin.Render()
w2if = vtk.vtkWindowToImageFilter()
w2if.SetInput(renWin)
w2if.Update()
writer = vtk.vtkPNGWriter()
writer.SetFileName(filename.png)
writer.SetInputData(w2if.GetOutput())
writer.Write()
return
答案 0 :(得分:0)
为了将所有图像设置为具有相同的“缩放”比例,您可以在渲染器中重置相机,如下所示:
(...)
### Save
ren.ResetCamera()
renWin.Render()
w2if = vtk.vtkWindowToImageFilter()
(...)
或者如果您愿意,您可以随时更改缩放系数:
ren.GetActiveCamera().Zoom(1.2) #increase zoom
ren.GetActiveCamera().Zoom(0.8) #decrease zoom
请查看vtkCamera
(https://www.vtk.org/doc/nightly/html/classvtkCamera.html)课程,它有一些示例。