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)文件路径
效果如图所示: