import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
# 处理nii格式的包
import SimpleITK as sitk
itk_img = sitk.ReadImage('../origin_nii/BraTS19_2013_2_1/BraTS19_2013_2_1_flair.nii.gz')
img = sitk.GetArrayFromImage(itk_img)
# 用于在plt中画子图
def showNii3(type, num):
plt.figure(1,figsize=(5,5))
if type == 0:
plt.subplot(3, 2, 1) # 画在图2上,且不在一个窗口
plt.imshow(img[num, :, :], cmap='gray')
elif type == 1:
plt.subplot(3, 2, 2) # 画在图2上,且不在一个窗口
plt.imshow(img[:, num, :], cmap='gray')
else:
plt.subplot(3, 2, 3) # 画在图2上,且不在一个窗口
plt.imshow(img[:, :, num], cmap='gray')
if __name__ == '__main__':
# 第0张图
sfreq0 = Slider(plt.axes([0.1, 0.15, 0.8, 0.03]), 'X', 0, img.shape[0], valinit=0, valstep=1)
sfreq0.on_changed(lambda val:showNii3(0, int(val)))
sfreq0.set_val(50)
# 第1张图
sfreq1 = Slider(plt.axes([0.1, 0.1, 0.8, 0.03]), 'Y', 0, img.shape[1], valinit=0, valstep=1)
sfreq1.on_changed(lambda val:showNii3(1, int(val)))
sfreq1.set_val(50)
# 第2张图
sfreq2 = Slider(plt.axes([0.1, 0.05, 0.8, 0.03]), 'Z', 0, img.shape[2], valinit=0, valstep=1)
sfreq2.on_changed(lambda val:showNii3(2, int(val)))
sfreq2.set_val(50)
plt.show()
代码可用,需要安装相关依赖包,修改(.nii.gz)文件路径
效果如图所示:
![使用plt和Slider滑块展示.nii格式三维切片图_第1张图片](http://img.e-com-net.com/image/info8/c9e6cb8defd343a8ba9d97a6c31eef7b.jpg)