python 膝关节数据raw和mhd转化为二维png,jpg等常规格式的切片

# https://blog.csdn.net/itnerd/article/details/94490944
# https://www.pianshen.com/article/6951276891/
import os
import cv2
import SimpleITK as sitk
import matplotlib.pyplot as plt




def plot_ct_scan(j,scan, file):
    num_slices = len(scan)
    print(num_slices)

    for i in range(0, num_slices):
        print(i)
        plt.imshow(scan[i], cmap='gray')
        plt.axis('off')
        # save = os.path.join(file, "{0}_{1}.png".format(j,i))
        save = os.path.join(file, "%d"%j+"_%03d_mask.png" % i)
        cv2.imwrite(save, scan[i])



if __name__ == '__main__':
    # 文件目录,含有两个文件
    # root = os.path.join('G:\Sliver07\\training-scans\scan\\1')
    # 文件目录,含有20个文件
    root = os.path.join('G:/Sliver07/training-scans\scan/')
    # 获取root目录下的所有文件
    paths = os.listdir(root)
    print(paths)

    j = 0
    sum = 0
    # 创建保存路径,存放在一个文件夹下,如果想分开以单独的文件夹存放,则把该行注释,并把循环中的注释取消掉
    file = "G:/Sliver07/training-scans/scan/1/mask/"
    for path in paths:  # 依次获取paths列表中的文件
        if path.find('mhd') >= 0:  # 仅获取mhd文件
            # 最简单的在path中读取图像信息,一般读取格式为mhd文件与dicom文件
            data = sitk.ReadImage(os.path.join(root, path))
            print(data)
            # 创建保存路径,分别存放
            # file = "G:/Sliver07/training-scans/scan/1/11/%d" % j
            # os.mkdir(file)
            # Getspacing是获取两个像素之间的间隔,获取图像的尺度信息
            spacing = data.GetSpacing()
            # GetArrayFromImage可用于将SimpleITK对象转换为ndarray,使用GetArrayFromImage()方法后,X轴与Z轴发生了对调,输出形状为:(Depth, Height, Width)
            scan = sitk.GetArrayFromImage(data)
            print("shape:",scan.shape)
            # print('spacing: ', spacing)
            print('# slice: ', len(scan))
            plot_ct_scan(j,scan, file)
            # plt.show()
            j = j + 1
            sum = sum + len(scan)

    print('总切片数slice: ', sum)


参考链接1:https://blog.csdn.net/itnerd/article/details/94490944
参考链接2:https://www.pianshen.com/article/6951276891/
参考链接3:https://blog.csdn.net/qq_38149542/article/details/121570188

点关注,不迷路!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三少的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值