python - VTK:显示二维图像时相机操作不起作用
问题描述
现在,我通过以下代码显示 2D 图像:
import vtk
img = vtk.vtkDICOMImageReader()
img.SetFileName('C:\\Users\\MLoong\\Desktop\\dicom_data\\Chang Cheng\\TOF\\IM_0174')
img.Update()
mapper = vtk.vtkImageMapper()
mapper.SetInputData(img.GetOutput())
actor = vtk.vtkActor2D()
actor.SetMapper(mapper)
ren = vtk.vtkRenderer()
ren.AddActor(actor)
ren.SetBackground(0.1, 0.2, 0.4)
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
renWin.SetSize(400, 400)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
renWin.Render()
# iren.Start()
print(ren.GetActiveCamera().GetPosition())
# ren.GetActiveCamera().SetPosition([0, 0, 0.5]) ############ change the camera position
# ren.ResetCameraClippingRange()
# ren.UpdateLightsGeometryToFollowCamera()
renWin.Render()
iren.Start()
我通过print(ren.GetActiveCamera().GetPosition())打印相机位置,位置是[0,0,1]。
结果是:
现在,我想通过以下方式更改相机位置:
...
print(ren.GetActiveCamera().GetPosition())
ren.GetActiveCamera().SetPosition([0, 0, 0.5])
ren.ResetCameraClippingRange()
ren.UpdateLightsGeometryToFollowCamera()
...
在我的理解中,相机是朝着物体移动的。因此,图像应该被放大。但是,没有任何变化,结果是:
解决方案
推荐阅读
- java - 如何修复java中动作监听器中的错误?
- hyperledger-fabric - Hyperledger Fabric 应用架构
- terraform - Terraform 变量:如何以更扁平的方式重构 vnet/subnets/nsgs 的 terraform 变量数据结构?
- r - 你需要 Xcode 在 RStudio MacOS 上运行 rstan 或 brms 包吗?
- c++ - 继承的构造函数不能用于复制对象
- python - 使用 pyodbc 选择/更新/选择
- python - 在 Keras 自定义层中保存层输出
- python - 从数据框中提取拓扑特征并将它们添加到新的扩展数据框中
- eclipse - 无法在eclipse中打开代号一个文件
- python - 循环遍历数组并每隔 n 行分组