我确实看到了几个与Nibabel有关的文件,当你只读取一个nii图像时,它可以正常工作,但是我需要从同一个文件夹中读取167个文件,我不知道怎么做。我试着使用glob,就像我们在OpenCV中使用它一样,但是它对Nibabel不起类似的作用。
data = glob.glob('path to my data' + '*.nii.gz')
print(len(data))
print(data)
data = np.asarray(data)
print(data)发布于 2022-06-16 15:30:16
正如上面提到的注释之一,您所描述的data只包含图像文件名,而不是它们的像素。
一旦您有了一个文件名列表(或某些容器,其中每个文件名字符串都是一个元素),那么您可以这样做:
import numpy as np;
import nibabel as nb;
if "imdata" not in locals():
for i in range ( len ( data ) ):
imname = data [ i ];
if "imdata" not in locals():
imdata = nb.load ( imname ).get_fdata().flatten();
imlen = len ( imdata );
imdata = imdata.reshape ( 1, imlen );
else:
imdata = np.append ( imdata, nb.load ( imname ).get_fdata().flatten().reshape ( 1, imlen ), axis=0 );如果图像大小相同的话,这是可行的--你将得到#images x #pixelsperimage的矩阵。当然,您也可以在3D或4D中这样做,这取决于您需要对图像数据做什么。
locals()的使用有点多,对我来说,写这篇文章是很方便的,因为我不需要在同一会话中重新加载图像。
https://stackoverflow.com/questions/72239289
复制相似问题