import os
import numpy as np
import nibabel as nib
import imageio
import SimpleITK as sitk
import matplotlib
from nibabel.viewers import OrthoSlicer3D
from matplotlib import pylab as plt
np.set_printoptions(threshold=1000000)
def read_niifile(niifilepath): # 读取niifile文件
# img = nib.load(niifilepath) # 下载niifile文件(其实是提取文件)
# print(img)
# img_wfdata = img.get_fdata() # 获取niifile数据
img=sitk.ReadImage((niifilepath))
# print(img)
img_fdata=sitk.GetArrayFromImage(img)
return img_fdata
# # def flip90_left(arr):
# new_arr = np.transpose(arr)
# new_arr = new_arr[::-1]
# return new_arr
def save_nii(niifilepath,saveniipath):
ini_data=read_niifile(niifilepath)
(x, y, z) = ini_data.shape # 获得数据shape信息:(长,宽,维度-切片数量,第四维)
# print(x,y,z)
for k in range(x):
silce = ini_data[k, :, :]
slice[silce>0]
def save_fig(niifilepath, savepath): # 保存为图片
fdata = read_niifile(niifilepath) # 调用上面的函数,获得数据
(x, y,z) = fdata.shape # 获得数据shape信息:(长,宽,维度-切片数量,第四维)
print(x,y,z)
for k in range(x):
# silce = fdata[:,:, k] # 三个位置表示三个不同角度的切片
silce = fdata[k,:, :]
imageio.imwrite(os.path.join(savepath, '{}.png'.format(k+1)), silce)
# 将切片信息保存为png格式
if __name__ == '__main__':
niifilepath = 'data/1.nii.gz'
savepath = 'data/ann_png'
# saveniipath='png2nii'
if not os.path.exists(savepath):
os.makedirs(savepath)
save_fig(niifilepath, savepath)
将nii格式的文件转换为png
于 2022-03-28 19:09:29 首次发布