nii文件转jpg,保存在同一文件夹下

该博客介绍了一个Python脚本,用于将.nii格式的医学图像文件批量转换为.jpg格式。脚本使用nibabel加载nii文件,然后通过imageio库保存为jpg。转换过程中,图像数据会进行90度旋转,并按切片顺序分别保存,每个切片的文件名包含其在原文件中的层数,以避免重名。转换后的jpg文件保存在与源nii文件相同的目录下。
摘要由CSDN通过智能技术生成

问题描述:
有一批nii文件,需要转换成jpg格式,将转换后的jpg文件保存在同一文件夹下。

思路:
通过nib.load读取nii文件转化为数组形式,再通过imageio.imwrite导出jpg文件。

步骤:

import nibabel as nib
import numpy as np
import imageio
import os

#读取nii文件
def read_niifile(niifile):  # 读取niifile文件
    img = nib.load(niifile)  # 下载niifile文件(其实是提取文件)
    img_fdata = img.get_fdata()  # 获取niifile数据
    img90 = np.rot90(img_fdata) #旋转90度
    #return img_fdata
    return img90

#保存jpg文件并输出
def save_fig(file):  # 保存为图片
    fdata = read_niifile(file)  # 调用上面的函数,获得数据
    (y, x, z) = fdata.shape  # 获得数据shape信息:(长,宽,维度-即切片数量)
    for k in range(z):
        silce = fdata[:, :, k]
        #silce = fdata[k, :, :]  # 三个位置表示三个不同角度的切片
        imageio.imwrite(os.path.join(output, '{}.jpg'.format(os.path.splitext(os.path.splitext(i)[0])[0]+'_'+str(k))), silce)
        # 将切片信息保存为jpg格式
        #i表示获取到的nii文件名(不含路径)
        #os.path.splitext(i)[0]表示去除文件名后缀
        #用两次splitext是因为图像原格式为.nii.gz,需要去两次后缀,如果是.nii形式的文件只用去除一次后缀即可
        #str(k)代表每层切片单独命名,避免重名,以_0,_1,...的形式命名

#读取文件
def findAllFile(base):
    for root, ds, fs in os.walk(base):
        for f in fs:
            yield f

#设置文件路径
base =r'C:\Users\nii' # nii文件的路径
output = r'C:\Users\jpg' # 保存png的路径
for i in findAllFile(base):
    dir = os.path.join(base,i)
    savepicdir = (os.path.join(output,i))
    #os.mkdir(savepicdir) #新建文件夹,重命名为nii文件名称,无需子文件夹,注释掉
    save_fig(dir)
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值