我的Slicer项目开发经验积累1

Posted inter_peng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的Slicer项目开发经验积累1相关的知识,希望对你有一定的参考价值。

本文由Markdown语法编辑器编辑完成.

关于3d Slicer的介绍, 在前面的几篇博文中已经有所介绍. 这篇文章主要分享, 在实际的项目开发中的经验.
Slicer是由很多很多的Module构成的, 这些Module分别承担了不同的应用场景. 因此, 完成一个比较复杂的操作, 一般需要在不同的Module之间手动切换. 这对于需要批量操作或自动化操作, 就带来了很大的不便.
好在, Slicer提供了丰富的接口, 可以通过Python调用底层的接口, 从而实现很多需要手动完成的工作.

以下, 首先会列举出一些常用的, 通过python, 代替手动操作的例子. 然后, 结合一个具体的案例, 介绍一下如何根据自己的项目需求, 来从源码中定位所需要的接口, 并应用到项目实践中.

1. Python常见接口:

3D View

获取3d view窗口中的相机实例

threeDView = slicer.app.layoutManager().threeDWidget(0).threeDView()
renderer = threeDView.renderWindow().GetRenderers().GetFirstRenderer()
camera = renderer.GetActiveCamera()
center = camera.GetFocalPoint()
pos = camera.GetPosition()
viewUp = camera.GetViewUp()

如何设置3d视图中的标准方位(A, P, L, R, S, )

Right = 1 #右视图
Left = 2 #左视图
Superior = 3 #俯视图
Inferior = 4 #仰视图
Anterior = 5 #正视图
Posterior = 6 #后视图

# 设置3d视图的默认方位为正视图
threeDView = slicer.app.layoutManager().threeDWidget(0).threeDView()
viewNode = slicer.app.layoutManager().threeDWidget(0).mrmlViewNode()
fov = viewNode.GetFieldOfView()
threeDView.lookFromAxis(5, fov)

改变/隐藏3d视图右下角的方位标识(orientation marker)

viewNode = slicer.app.layoutManager().threeDWidget(0).mrmlViewNode()
# 隐藏掉方位标识OrientationMarker:0,不显示;1,Cube;2,Human;3,Axes
viewNode.SetOrientationMarkerType(0)

Slice view:

隐藏/显示3个sliceView窗口中的十字光标

viewNodes = slicer.util.getNodesByClass("vtkMRMLSliceCompositeNode")
for viewNode in viewNodes:
   viewNode.SetSliceIntersectionVisibility(0)

2. 项目需求提出:

未完待续…

以上是关于我的Slicer项目开发经验积累1的主要内容,如果未能解决你的问题,请参考以下文章

我的Slicer项目开发经验积累1

QT 实用代码片段

C++ 代码片段(积累)

Java开发工作经验积累

[工作积累] UE4 并行渲染的同步 - Sync between FParallelCommandListSet & FRHICommandListImmediate calls(代码片段

如何从片段返回主要活动