将多张png图片按照(h, w, c)组装成nii.gz
import numpy as np
import nibabel as nib
from glob import glob
from torch.utils.data import Dataset
from torchvision import transforms
class DataSet(Dataset): # 方便读数据
def __init__(self, label_path):
self.label_path = label_path
self.transform = transforms.Compose([transforms.ToTensor()],)
def __len__(self):
return len(self.label_path)
def __getitem__(self, idx):
label = self.label_path[idx]
label = Image.open(label)
label = self.transform(label)
return label
label_path = './label_test/1/*'
label_path = glob(label_path)
dataset = DataSet(label_path)
label = dataset[0]
z, x, y = label.shape
z = len(dataset) # 通道数
allImage = np.zeros([x, y, z], dtype='uint8')
# print(x, y, z)
for i in range(z):
label = dataset[i]
singleImage = label.numpy()
allImage[:, :, i] = singleImage
# print(allImage.shape)
new_image = nib.Nifti1Image(allImage, np.eye(4))
nib.save(new_image, 'data2.nii.gz')
(适用于灰度图像,RGB图像需转为单通道)
image = Image.open(singleImage).convert('L')
参考:
1.https://blog.csdn.net/weixin_40519315/article/details/106022220?spm=1001.2014.3001.5501