首先确保安装了nibabel
import os
import nibabel as nib
import matplotlib.pyplot as plt
from PIL import Image
# 设置源目录和目标目录
src_dir = 'path/to/source/nii/files'
dst_dir = 'path/to/destination/jpg/files'
# 确保目标目录存在
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
# 遍历源目录中的所有nii文件
for filename in os.listdir(src_dir):
if filename.endswith('.nii') or filename.endswith('.nii.gz'):
# 构建完整的文件路径
nii_path = os.path.join(src_dir, filename)
# 读取nii文件
nii_image = nib.load(nii_path)
# 获取数据
image_data = nii_image.get_fdata()
# 遍历数据的每一个slice
for i in range(image_data.shape[-1]):
# 使用matplotlib保存图像
plt.imsave(os.path.join(dst_dir, f'{os.path.splitext(filename)[0]}_slice_{i}.jpg'),
image_data[:, :, i], cmap='gray')
# 如果你想要使用PIL来保存图像,可以这样做:
# img = Image.fromarray(image_data[:, :, i])
# img = img.convert('L') # 转换为灰度图像
# img.save(os.path.join(dst_dir, f'{os.path.splitext(filename)[0]}_slice_{i}.jpg'))
print('转换完成')
请将 path/to/source/nii/files 替换为包含 .nii 文件的目录路径,将 path/to/destination/jpg/files 替换为你想要保存 .jpg 文件的目录路径。
这段代码会处理源目录中的所有 .nii 和 .nii.gz 文件,并将每个文件的每个slice保存为单独的 .jpg 文件。