如何在Python(不使用MedPy)或C中将*.mha文件转换为*.nii文件
How to convert *.mha file to *.nii file in Python (without using MedPy) or C?
我想在Python
中处理*.mha
文件。但它需要MedPy
包,这取决于ITK
包。我目前在安装软件包时遇到问题ITK
。我在想是否有办法*.mha
文件转换为*.nii
文件(使用其他方式,可能C++
),因为我可以使用Python
读取*.nii
文件。欢迎任何相关的指针。
您可以在Python中安装SimpleITK并使用它来进行转换。例如
import SimpleITK as sitk
root_path = '/path/to/image'
nii_path = root_path + '/data.nii'
mha_path = root_path + '/data.mha'
img = sitk.ReadImage(nii_path)
sitk.WriteImage(img, mha_path)
解决此问题的另一种方法是安装sci-kit映像和simpleitk。
这不需要从源代码构建或包装ITK,并允许读取MHA文件并写入NIFTI格式。
pip install scikit-image
pip install SimpleITK or easy_install -U SimpleITK
安装这些代码后,如果您运行以下代码,这应该可以工作
import skimage.io as io
path = 'C:/test.mha' #path to your MHA file
outpath = 'C:/test.nii'
img = io.imread(path,plugin='simpleitk')
io.imsave('outpath',img,plugin='simpleitk')
为了得到这个问题的答案,我浪费了 24 小时,但最后,我可以说从 .mha 转换为 .nii 文件非常简单1. 首先,您必须在 conda 或您正在使用的环境中安装 SimpleITK 软件包
之后,只需按照以下步骤转换任何文件。
import SimpleITK as sitk
import matplotlib.pyplot as plt
import numpy as np
import os
OUTPUT_DIR = 'Output'
# Image = sitk.ReadImage('lena1.png')
Image = sitk.ReadImage('Flair.mha')
print(Image.GetPixelIDTypeAsString())
sitk.WriteImage(Image, os.path.join(OUTPUT_DIR, 'Flair.nii'))
# sitk.WriteImage(Image, os.path.join(OUTPUT_DIR, 'SimpleITK.bmp'))
# plt.imshow(sitk.GetArrayViewFromImage(Image))
# plt.axis('off')
# plt.show()
通过执行以下步骤,我认为你们将获得所需的输出。
相关文章:
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何在 c++ 中将数据与文件流分离
- 在 C++ 中将双精度变量写入二进制文件
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 是否可以在命令行中将输入参数传递给可执行文件
- 在 c++ 中将数据从文件读取到队列中
- 如何在 c++ 中将文本文件传递到 2D 数组中?
- GLM如何在不声明内联函数并在另一个(未连接的?)文件中将其定义的函数逃脱
- 从.txt文件中将C 中的JSON字符串贴上
- C 从文本文件中将数据输入INT矢量
- 如何在 c++ 的头文件中将一个类的对象用作另一个类的数据
- 如何在生成文件中将.png列表转换为 pdf 列表
- 如何从文件中将名称插入2D字符数组
- 从 txt 文件中将后缀表达式作为字符串读取
- 正在从文本文件中将各种数量的值读取到数组中
- C++,<char>逐个字符地从文件中将字符读取到向量中
- 如何在文件中将特定表达式切换为小写(linux命令)
- 正在从文件中将数据读取到结构数组中
- C++没有从文本文件中将值读入数组