# 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
点关注,不迷路!!!!!!