npy转换为png和nii文件

#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)

 

posted @ 2022-02-25 20:08  九叶草  阅读(1074)  评论(0编辑  收藏  举报