#coding:utf-8 import matplotlib.pyplot as plt import numpy as np import os from skimage.transform import resize from glob import glob import SimpleITK as sitk file_dir = r"D:\MyData\3Dircadb1_fusion_date\npy\train_image\*" # npy文件路徑 dest_dir = r"D:\MyData\3Dircadb1_fusion_date\png" # 文件存儲的路徑 def npy_png(file_dir, dest_dir): # 如果不存在對應文件,則創建對應文件 if not os.path.exists(dest_dir): os.makedirs(dest_dir) path = glob(file_dir) k=0 for file in path: arr = np.load(file) z = arr.shape[0] # 獲取Z軸大小 k += 1 for i in range(z-1): # 因為是npy是三維的,但是png二維顯示,所以我按照Z軸切片進行保存展示 arr1 = arr[i:i+1,...] #每次增長1 slice arr2 = arr1[0, ...] # 將其轉換為兩維,因為Z軸當前為1,可以省略。 disp_to_img = resize(arr2, [128, 128]) plt.imsave(os.path.join(dest_dir, "{}_{}_disp.png".format(k,i)), disp_to_img, cmap='plasma') # 定義命名規則,保存圖片為彩色模式 ## npy文件轉換為nii文件 # sitk_img = sitk.GetImageFromArray(arr, isVector=False) # sitk.WriteImage(sitk_img, os.path.join(dest_dir, str(i) + ".nii")) # print('file_name:{}'.format(file)) if __name__ == "__main__": npy_png(file_dir, dest_dir)