python+dicom转nii,并且适用于一个文件夹里面有多组dicom数据

前言

有些dicom的文件夹,用软件打开,他娘的竟然有好几组dicom序列,用普通的转nii文件的方法的话,我还得挨个把它们分离出来。累了累了,所以有下面的代码

代码

import os
import SimpleITK as sitk

def dcm2nii(dicom_dir_,save_dir_):
    if not os.path.exists(save_dir_):
        os.mkdir(save_dir_)

    series_ids = sitk.ImageSeriesReader.GetGDCMSeriesIDs(dicom_dir_)
    # print(len(series_ids))

    for idx_series_ids in range(len(series_ids)):
        series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(dicom_dir_,series_ids[idx_series_ids])
        series_reader = sitk.ImageSeriesReader()
        series_reader.SetFileNames(series_file_names)
        image = series_reader.Execute()
        print(f'{
      
      idx_series_ids} spacing: {
      
      image.GetSpacing()}')

        filename = f'{
      
      idx_series_ids:03}.nii.gz'
        save_path = os.path.join(save_dir_,filename)
        sitk.WriteImage(image,save_path)
    
    print('转换结束'.center(60,'='))


if __name__ == '__main__':
    dicom_dir = "重建 2月28"
    save_dir = "test"
    dcm2nii(dicom_dir_=dicom_dir,save_dir_=save_dir)

    pass

猜你喜欢

转载自blog.csdn.net/sdhdsf132452/article/details/129579179