for i in range(width):
slice_data = npy_data[i, :, :]
可以对三个方向(从上到下、从前到后和从左到右)完成对npy文件的切片操作。
完整代码如下:
import numpy as np
import os
import matplotlib.pyplot as plt
input_base_folder = 'E:\\study\\data\\ToothFairy_Dataset\\ToothFairy_Dataset\\Dataset\\'
output_root_folder = 'E:\\ToothFairy_Dataset\\s_png\\' # 替换为输出根文件夹路径
# 获取所有的子文件夹
subfolders = [folder for folder in os.listdir(input_base_folder) if
os.path.isdir(os.path.join(input_base_folder, folder))]
for subfolder in subfolders:
# 构建 data.npy 的完整路径
npy_file_path = os.path.join(input_base_folder, subfolder, 'data.npy')
if os.path.exists(npy_file_path):
# 从NPY文件加载数据
npy_data = np.load(npy_file_path)
# 获取数据的维度
depth, height, width = npy_data.shape
print(depth,height,width)
# 从文件夹名中获取目标部分
desired_part = subfolder
# 创建输出子文件夹
output_folder = os.path.join(output_root_folder, desired_part)
os.makedirs(output_folder, exist_ok=True)
# 按高度(垂直方向)从高到低切片
for i in range(width):
slice_data = npy_data[i, :, :]
# 创建新的输出文件夹路径
slice_filename = os.path.join(output_folder, f'{i}.png')
plt.imsave(slice_filename, slice_data, cmap='gray')
print("Slices saved in respective folders.")