读取解压h5文件为图片

1.首先读取h5文件为.nii.gz格式

import h5py
import os
import numpy as np
import SimpleITK as sitk

dataset = h5py.File(r'./datasets/train/youyi_liver.h5', 'r')   #指定h5文件的路径
savepath = './datasets/youyi_liver'   #另存为nii文件的路径
first_level_keys = [key for key in dataset.keys()]
for first_level_key in first_level_keys:
    if not os.path.exists(os.path.join(savepath, first_level_key)):
        os.makedirs(os.path.join(savepath, first_level_key))
    second_level_keys = [key for key in dataset[first_level_key].keys()]
    for second_level_key in second_level_keys:
        if not os.path.exists(os.path.join(savepath, first_level_key, second_level_key)):
            os.makedirs(os.path.join(savepath, first_level_key, second_level_key))
        image_arr = np.array(dataset[first_level_key][second_level_key])
        img = sitk.GetImageFromArray(image_arr)
        img.SetSpacing([1.0, 1.0, 1.0])   #根据需求修改spacing
        sitk.WriteImage(img, os.path.join(savepath, first_level_key, second_level_key, second_level_key + ".nii.gz"))
    print(first_level_key)

运行后如下图所示:
在这里插入图片描述
在这里插入图片描述

2.将.nii格式或.nii.gz格式显示为图片

from nibabel.viewers import OrthoSlicer3D
from nibabel import nifti1
import nibabel as nib
from matplotlib import pylab as plt
import matplotlib
 
# 文件名,nii或nii.gz
example_filename = r'D:\python\project\RCN\datasets\youyi_liver\00139427_225\volume\volume.nii.gz'
img = nib.load(example_filename)
 
# 打印文件信息
print(img)
print(img.dataobj.shape)
 
#shape不一定只有三个参数,打印出来看一下
width, height, queue = img.dataobj.shape
 
# 显示3D图像
OrthoSlicer3D(img.dataobj).show()
 
# 计算看需要多少个位置来放切片图
x = int((queue/10) ** 0.5) + 1
num = 1
# 按照10的步长,切片,显示2D图像
for i in range(0, queue, 10):
    img_arr = img.dataobj[:, :, i]
    plt.subplot(x, x, num)
    plt.imshow(img_arr, cmap='gray')
    num += 1
 
 
plt.show()
 

显示的结果如下所示:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值