首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Nibabel从同一个文件夹读取多个Nifti文件?

如何使用Nibabel从同一个文件夹读取多个Nifti文件?
EN

Stack Overflow用户
提问于 2022-05-14 10:20:04
回答 1查看 471关注 0票数 0

我确实看到了几个与Nibabel有关的文件,当你只读取一个nii图像时,它可以正常工作,但是我需要从同一个文件夹中读取167个文件,我不知道怎么做。我试着使用glob,就像我们在OpenCV中使用它一样,但是它对Nibabel不起类似的作用。

代码语言:javascript
复制
data = glob.glob('path to my data' + '*.nii.gz')
print(len(data))
print(data)
data = np.asarray(data)
print(data)
EN

回答 1

Stack Overflow用户

发布于 2022-06-16 15:30:16

正如上面提到的注释之一,您所描述的data只包含图像文件名,而不是它们的像素。

一旦您有了一个文件名列表(或某些容器,其中每个文件名字符串都是一个元素),那么您可以这样做:

代码语言:javascript
复制
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()的使用有点多,对我来说,写这篇文章是很方便的,因为我不需要在同一会话中重新加载图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72239289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档