libscnvtk.py
1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import scnvtk
import vtk
from ..libift import libift as libift
def Interp(img):
scn = VtkImageDataToScene(img)
scn2=libift.LinearInterp(scn,0,0,0)
libift.NewDestroyScene(scn)
return SceneToVtkImageData(scn2)
def SceneToVtkImageData(scn):
dx = libift.GetDx(scn)
dy = libift.GetDy(scn)
dz = libift.GetDz(scn)
xsize = libift.GetXSize(scn)
ysize = libift.GetYSize(scn)
zsize = libift.GetZSize(scn)
img = vtk.vtkImageData()
img.SetSpacing(dx,dy,dz)
img.SetOrigin(0,0,0)
img.SetDimensions(xsize,ysize,zsize)
img.SetScalarTypeToUnsignedShort()
img.SetNumberOfScalarComponents(1)
img.AllocateScalars()
scnvtk.CopyImageBufferScnToVtk(img.GetScalarPointer(),scn)
return img
def VtkImageDataToScene(img):
d = img.GetSpacing()
dx=d[0]
dy=d[1]
dz=d[2]
d = img.GetDimensions()
xsize=d[0]
ysize=d[1]
zsize=d[2]
scn=libift.CreateScene(xsize,ysize,zsize)
libift.SetDx(scn,dx)
libift.SetDy(scn,dy)
libift.SetDz(scn,dz)
scnvtk.CopyImageBufferVtkToScn(scn,img.GetScalarPointer())
return scn
def WriteVtkImageData(img,filename):
scn = VtkImageDataToScene(img)
libift.WriteScene(scn,filename)
libift.NewDestroyScene(scn)
def ReadVtkImageData(filename):
scn = libift.ReadScene(filename)
img=SceneToVtkImageData(scn)
libift.NewDestroyScene(scn)
return img