npy读取

使用numpy读取,nibabel.viewers.OrthoSlicer3D显示

1
2
image = np.load(path)
OrthoSlicer3D(image).show()

npz读取

使用numpy读取

1
2
3
4
5
6
7
>>> import numpy as np
>>> data = np.load('atlas.npz')
>>> data.files
['vol', 'seg', 'train_avg']
>>> vol = data['vol']
>>> seg = data['seg']
>>> train_avg = data['train_avg']

使用Pillow(PIL)显示

1
2
3
4
5
6
7
>>> vol.shape
(160, 192, 224)
>>> seg.shape
(160, 192, 224)
>>> from PIL import Image
>>> im = Image.fromarray(seg[10])
>>> im.show()

使用Matplotlib

1
2
3
4
>>> import matplotlib.pyplot as plt
>>> plt.imshow(seg[10], cmap='Greys_r')
<matplotlib.image.AxesImage object at 0x00000257BF085D00>
>>> plt.show()

保存为npy格式

1
2
import numpy as np
np.save('test',image)

保存为npz格式

numpy.savez() 函数将多个数组保存到以 npz 为扩展名的文件中。

1
numpy.savez(file, *args, **kwds)

参数说明:

  • file:要保存的文件,扩展名为 .npz,如果文件路径末尾没有扩展名 .npz,该扩展名会被自动加上。
  • args: 要保存的数组,可以使用关键字参数为数组起一个名字,非关键字参数传递的数组必须放在关键字数组的前面,非关键字数组会自动起名为 arr_0, arr_1, … 。
  • kwds: 要保存的数组使用关键字名称。
1
2
3
4
5
6
7
filename = '文件名'
a = np.ones([2,2])
b = np.ones([3,3])
np.savez(filename, data1=a, data2=b)

data = np.load(filename)
data.files # ['data1', 'data2']

nii读取

使用nibabel

1
2
3
4
5
6
7
8
>>> import nibabel as nib
>>> from nibabel.viewers import OrthoSlicer3D
>>> filename = 'S11.delineation.skullstripped.nii.gz'
>>> img = nib.load(filename)
>>> data = img.get_fdata()
>>> OrthoSlicer3D(img.dataobj).show
<bound method OrthoSlicer3D.show of <OrthoSlicer3D: (160, 192, 160)>>
>>> OrthoSlicer3D(img.dataobj).show()

nii保存

1
2
3
4
5
import nibabel as nib
# 第一种
nib.Nifti1Image(img1.get_data(),affine=newaffine).to_filename('2_newnew.nii')
# 第二种
nib.save(nib.Nifti1Image(array, affine), filename)

读取mhd

1
2
3
4
5
6
7
import SimpleITK as sitk
path = 'xxx.mhd'
itkimage = sitk.ReadImage(path)
image = sitk.GetArrayFromImage(itkimage)

from nibabel.viewers import OrthoSlicer3D
OrthoSlicer3D(image).show()

pkl读取

1
2
3
4
5
def pkload(fname):
with open(fname, 'rb') as f:
return pickle.load(f)

pkload(path)

pkl保存

1
2
3
4
5
def savepkl(data, path):
with open(path, 'wb') as f:
pickle.dump(data, f)

savepkl(data=(data), path=name + ".pkl")