目录下要先新建zhuanzheng文件夹
z文件夹会自己创建
import os
import nibabel as nib
import imageio
from PIL import Image
from PIL import Image
import os
#nii文件转png
def read_niifile(niifilepath): # 读取niifile文件
img = nib.load(niifilepath) # 下载niifile文件(其实是提取文件)
img_fdata = img.get_fdata() # 获取niifile数据
return img_fdata
'''
def save_fig(niifilepath, savepath): # 保存为图片
fdata = read_niifile(niifilepath) # 调用上面的函数,获得数据
(x, y, z) = fdata.shape # 获得数据shape信息:(长,宽,维度-切片数量,第四维)
for k in range(x):
silce = fdata[k, :, :] # 三个位置表示三个不同角度的切片
imageio.imwrite(os.path.join(savepath, '{}.png'.format(k)), silce)
# 将切片信息保存为png格式
'''
def save_fig(niifilepath, savepath): # 保存为图片
fdata = read_niifile(niifilepath) # 调用上面的函数,获得数据
(x, y, z) = fdata.shape # 获得数据shape信息:(长,宽,维度-切片数量,第四维)
for k in range(z):
silce = fdata[:, :, k] # 三个位置表示三个不同角度的切片
imageio.imwrite(os.path.join(savepath, '{}.png'.format(k)), silce)
# 将切片信息保存为png格式
def get_filelist(path):
Filelist = []
for home, dirs, files in os.walk(path):
for filename in files:
# 文件名列表,包含完整路径
Filelist.append(os.path.join(home, filename))
# # 文件名列表,只包含文件名
# Filelist.append( filename)
return Filelist
if __name__ == '__main__':
niifilepath = r"F:\desktop\1\draw\238246_brain.nii.gz"
savepath = r'F:\desktop\1\draw\png238246\z'
if not os.path.exists(savepath):
os.makedirs(savepath)
save_fig(niifilepath, savepath)
#获取文件夹得目录
filePath = savepath
# 指定保存的文件夹
outputPath = savepath
# 获得文件夹下所有文件
Filelist = get_filelist(filePath)
print(len(Filelist))
# 迭代所有图片
for filename in Filelist:
print(filename)
# 读取图像
im = Image.open(filename)
# 指定逆时针旋转的角度
#im_rotate = im.transpose(Image.ROTATE_90)
#im_rotate = im.transpose(Image.ROTATE_180)
im_rotate = im.transpose(Image.ROTATE_270)
# 保存图像
output_path = filename.replace(filePath, outputPath)
outputdir = output_path.rsplit('\\', 1)[0]
if not os.path.exists(outputdir):
os.mkdir(outputdir)
im_rotate.save(output_path)
#水平镜像保存
# 设置输入和输出目录
input_dir = r"F:\png238246\z"
output_dir = r"F:\zhuanzheng"
# 循环输入目录中的所有png图像, 这里如果你是别的类型格式图片,直接更改点后图片类型即可
for filename in os.listdir(input_dir):
if filename.endswith('.png') or filename.endswith('.png'):
# 打开图像
img = Image.open(os.path.join(input_dir, filename))
# 水平镜像并保存
mirrored_img = img.transpose(Image.FLIP_LEFT_RIGHT)
mirrored_img.save(os.path.join(output_dir, f'horiz_{filename}'))
# 垂直镜像并保存
mirrored_img = img.transpose(Image.FLIP_TOP_BOTTOM)
mirrored_img.save(os.path.join(output_dir, f'vert_{filename}'))