更:
需要加一句
# 踩坑记录:这一句非常重要,不然的话输出的是四维
# 使用squeeze移除任何大小为1的维度(尽管在这个例子中它可能不会做任何事情)
image_3d_squeezed = np.squeeze(image_3d)
下一句也改为:
nii_img = nib.Nifti1Image(image_3d_squeezed, affine)
import pandas as pd
import os
import nibabel as nib
import radiomics
import SimpleITK as sitk
from radiomics import featureextractor
import numpy as np
from PIL import Image
import nibabel as nib
# 读取PNG文件夹路径
png_folder = "E:/zxxzl/srtp02/four_jiqixuexi/pngtransform/pngto3d_all/ARVC"
# 创建保存NIfTI文件的目标文件夹
output_folder = "E:/zxxzl/srtp02/four_jiqixuexi/pngtransform/pngto3d_all/output"
os.makedirs(output_folder, exist_ok=True)
output_path = "E:/zxxzl/srtp02/four_jiqixuexi/pngtransform/pngto3d_all/output/1.nii.gz"
for filename in os.listdir(png_folder):
if filename.endswith(".png"):
# 构建完整的文件路径
png_path = os.path.join(png_folder, filename)
# 读取PNG图片
image = Image.open(png_path)
image_array = np.array(image).astype(np.float32) # 转换为float32类型
# 将二维图像转换为三维,层数为1
image_3d = image_array[:, :, np.newaxis]
# 创建NIfTI图像对象,使用单位矩阵作为仿射变换矩阵
affine = np.eye(4)
nii_img = nib.Nifti1Image(image_3d, affine)
# 构建目标文件的完整路径和名称
nii_filename = os.path.splitext(filename)[0] + '.nii.gz'
output_path = os.path.join(output_folder, nii_filename)
# 保存为.nii.gz格式
nib.save(nii_img, output_path)
print(f"Saved {output_path}")
# 验证维度
# 加载保存的NIfTI文件以验证维度
# loaded_nii = nib.load(output_path)
# print("Loaded image dimensions:", loaded_nii.shape)
# print("Loaded image affine:", loaded_nii.affine)
。。嗯嗯我只是记录一下代码方便之后自己使用,如果有uu不小心看到了请谨慎使用。。嘿嘿